我目前正在处理一个每个成员都有订阅日期的数据框。我希望统计每月的订阅次数,但默认行为会分别计算每个月的每个日期。简化数据框中的日期
我发现了一种修改日期片的方法,并在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 :),你绝对不想改变方式(正确的)任意地到第一个这样做。 –