2016-11-25 103 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