8

我有一个DataFrame带有日期列的熊猫。它不是一个索引。

我想使用每个位置每月的计数聚合在数据框上制作一个 pivot_table。

数据如下所示:

['INDEX'] 日期位置计数
0 2009-01-02 00:00:00 AAH 1
1 2009-01-03 00:00:00 ABH 1
2 2009-01-03 00:00:00 AAH 1
3 2009-01-03 00:00:00 ABH 1
4 2009-01-04 00:00:00 ACH 1

我用了:

pivot_table(cdiff, values='COUNT', rows=['DATE','LOCATION'], aggfunc=np.sum)

旋转这些值。我需要一种将 cdiff.DATE 转换为月份而不是日期的方法。我希望最终得到类似的结果:数据如下所示:

  
  月位置数
1 月 AAH 2
1 月 ABH 2
一月 ACH 1

strftime我在 cdiff.DATE 上尝试了各种方法,但均未成功。它想将 应用于字符串,而不是系列对象。

4

1 回答 1

12

我会建议:

months = cdiff.DATE.map(lambda x: x.month)
pivot_table(cdiff, values='COUNT', rows=[months, 'LOCATION'],
            aggfunc=np.sum)

要获取月份名称,请传递不同的函数或使用内置的calendar.month_name. 要以您想要的格式获取数据,您应该调用reset_index结果,或者您也可以这样做:

cdiff.groupby([months, 'LOCATION'], as_index=False).sum()

于 2012-04-01T16:21:23.653 回答