2012-09-13 16 views
0

我目前正在處理一個每個成員都有訂閱日期的數據框。我希望統計每月的訂閱次數,但默認行爲會分別計算每個月的每個日期。簡化數據框中的日期

我發現了一種修改日期片的方法,並在01上設置每個日期日,但我寧願使用由熊貓製作的東西。

任何關於我應該去哪裏的建議?

+0

您使用的是日期時間嗎?你能不能把我的.month和.year分開?如果你能給出一個玩具的例子,說明你有什麼幫助。 –

+0

對不起,沒有回答你的問題。我找到了一個解決方案。不,我無法使用.month也沒有.year。我決定使用調用replace的lamdba函數(day = 1)將日期更改爲每個月的第一天。這裏壞事是我必須改變數據庫。 – cp151

+0

恩,克萊門茨接受的答案使用.month和.year :),你絕對不想改變方式(正確的)任意地到第一個這樣做。 –

回答

2

如果您的訂購日期是datetime.datetime實例,那麼你可以使用(未​​經測試)類似(其中df是你DataFrame):

df.groupby(lambda L: (L.year, L.month)) 

你需要調整GROUPBY如果日期時間ISN」你的DataFrame的索引。

+0

謝謝你真的很有用 – cp151

1

這有幫助嗎?

讓我們創建一個持有會員ID和訂閱日期的系列。

In [21]: s = pandas.Series(range(100), pandas.date_range('2010-10-10', periods=100)) 

按年份和月份分組,按每個(年/月)組合的訂閱數計數。

In [22]: grouped = s.groupby([s.index.year, s.index.month]) 

In [23]: nr_subscriptions = grouped.count() 

In [24]: nr_subscriptions.index.names = ['Year', 'Month'] 

In [25]: nr_subscriptions.names = 'nr_subscriptions' 

In [26]: nr_subscriptions 
Out[26]: 
Year Month 
2010 10  22 
     11  30 
     12  31 
2011 1  17 
+0

謝謝,我使用lamdba函數來聲明第1天的每個日期使用replace() – cp151