我目前正在處理一個每個成員都有訂閱日期的數據框。我希望統計每月的訂閱次數,但默認行爲會分別計算每個月的每個日期。簡化數據框中的日期
我發現了一種修改日期片的方法,並在01上設置每個日期日,但我寧願使用由熊貓製作的東西。
任何關於我應該去哪裏的建議?
我目前正在處理一個每個成員都有訂閱日期的數據框。我希望統計每月的訂閱次數,但默認行爲會分別計算每個月的每個日期。簡化數據框中的日期
我發現了一種修改日期片的方法,並在01上設置每個日期日,但我寧願使用由熊貓製作的東西。
任何關於我應該去哪裏的建議?
如果您的訂購日期是datetime.datetime
實例,那麼你可以使用(未經測試)類似(其中df
是你DataFrame
):
df.groupby(lambda L: (L.year, L.month))
你需要調整GROUPBY如果日期時間ISN」你的DataFrame的索引。
謝謝你真的很有用 – cp151
這有幫助嗎?
讓我們創建一個持有會員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
謝謝,我使用lamdba函數來聲明第1天的每個日期使用replace() – cp151
您使用的是日期時間嗎?你能不能把我的.month和.year分開?如果你能給出一個玩具的例子,說明你有什麼幫助。 –
對不起,沒有回答你的問題。我找到了一個解決方案。不,我無法使用.month也沒有.year。我決定使用調用replace的lamdba函數(day = 1)將日期更改爲每個月的第一天。這裏壞事是我必須改變數據庫。 – cp151
恩,克萊門茨接受的答案使用.month和.year :),你絕對不想改變方式(正確的)任意地到第一個這樣做。 –