【问题标题】:Pandas pivot_table on date熊猫数据透视表日期
【发布时间】:2012-04-15 07:26:40
【问题描述】:

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

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

数据如下:

['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

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

【问题讨论】:

  • 我在Q&A 中提供了几个详细的示例和替代方法,您或其他人可能会觉得有帮助。

标签: python datetime pandas


【解决方案1】:

我建议:

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()

【讨论】:

  • 感谢@Wes,cdiff['month'] = cdiff.DATE.apply(lambda x: datetime.datetime.strftime(x,'%B')) 成功转换为月份。
猜你喜欢
  • 2021-02-28
  • 2023-01-11
  • 2021-12-19
  • 1970-01-01
  • 2017-01-14
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多