2016-11-25 71 views
0

我有一个数据框'xyz',我想创建一个基于简单计算的新列,但是当我运行下面的代码时,结果是NaN。从聚合创建Pandas中的列

XYZ =

account_id date  
0 123  2016-01-01 
1 124  2016-01-01 
2 125  2016-01-01 
3 126  2016-01-01 
4 123  2016-01-02 
5 124  2016-01-02 
6 125  2016-01-02 
7 126  2016-01-02 

新专栏中,我想创建:天在那里我有每ACCOUNT_ID数据的数量。

代码我执行:

xyz['new_column'] = xyz.groupby('account_id').date.nunique() 

结果我得到:

account_id date   new_column 
0 123  2016-01-01  NaN 
1 124  2016-01-01  NaN 
2 125  2016-01-01  NaN 
3 126  2016-01-01  NaN 
4 123  2016-01-02  NaN 
5 124  2016-01-02  NaN 
6 125  2016-01-02  NaN 
7 126  2016-01-02  NaN 

提前感谢!

回答

1

可以使用transform

xyz['new_column'] = xyz.groupby('account_id').date.transform('nunique') 
+0

这正是我所期待的!谢谢,@ Julien Spronck! – Levine

+0

@Levine不客气:-) –

1

下面是一个替代的解决方案:

xyz['new_column'] = xyz.date.map(dict(xyz.date.value_counts())) 
+0

谢谢,@AlexG。我跑这个,但它计算了日期的所有实例。如果我措辞混乱,道歉。我希望得到的结果是计数每个日期的account_id,但我用'account_id'关掉'date'并得到了我期待的结果。谢谢! – Levine

+0

哎呀,那是我的错。干杯 – AlexG