2014-04-22 81 views
4

我剛剛開始使用熊貓,並試圖結合:按日期對數據進行分組,並計算每組中的唯一值。熊貓:重新採樣後計算唯一值

這裏是我的數據是這樣的:

    User, Type 
Datetime 
2014-04-15 11:00:00, A, New 
2014-04-15 12:00:00, B, Returning 
2014-04-15 13:00:00, C, New 
2014-04-20 14:00:00, D, New 
2014-04-20 15:00:00, B, Returning 
2014-04-20 16:00:00, B, Returning 
2014-04-20 17:00:00, D, Returning 

這裏就是我想獲得到:重採樣日期時間指數一天(這是我能做到),也算爲每個獨立用戶天。 我對「類型」欄目沒有興趣。

Day, Unique Users 
2014-04-15, 3 
2014-04-20, 2 

我想df.user.resample('D', how='count').unique但它似乎並沒有給我正確的答案。

回答

5

您不需要重新取樣就可以在問題中獲得所需的輸出。我想你可以只用一個groupby上日期度日:

print df.groupby(df.index.date)['User'].nunique() 

2014-04-15 3 
2014-04-20 2 
dtype: int64 

再算上獨特的用戶後,如果你願意,你可以重新取樣,以填補時間序列缺口:

cnt = df.groupby(df.index.date)['User'].nunique() 
cnt.index = cnt.index.to_datetime() 
print cnt.resample('D') 

2014-04-15  3 
2014-04-16 NaN 
2014-04-17 NaN 
2014-04-18 NaN 
2014-04-19 NaN 
2014-04-20  2 
Freq: D, dtype: float64 
+0

我不得不使用'打印df.groupby(df.index.date)[ '用戶']申請(拉姆達X:x.nunique())'但這工作。謝謝! –

-1

我遇到了同樣的問題。例如,Karl D的答案適用於某種類型的重新綁定。但如果你想要的指數是

Jan 2014 
Feb 2014 
March 2014 

,然後繪製它作爲一個時間序列?

這裏就是我所做的。

df.user.resample('M',lambda x: x.nunique())