2012-09-13 17 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