Pandas pivot_table日期

Joh*_*ohn 8 python datetime pandas

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

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

数据如下所示:

['INDEX']                 DATE LOCATION  COUNT
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转换为月份而不是日期.我希望最终得到类似的结果:数据看起来像这样:

  
  MONTH LOCATION  COUNT
January      AAH      2
January      ABH      2
January      ACH      1

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

Wes*_*ney 12

我会建议:

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

要获取月份名称,请传递不同的功能或使用内置功能calendar.month_name.要以您想要的格式获取数据,您应该调用reset_index结果,或者您也可以执行以下操作:

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

  • 谢谢@Wes,`cdiff ['month'] = cdiff.DATE.apply(lambda x:datetime.datetime.strftime(x,'%B'))`做了转换为几个月的技巧. (2认同)