如何使用pd.Grouper按月对日期进行分组?

时间:2019-04-07 13:09:39

标签: python python-3.x datetime pandas-groupby

我已经搜索了stackoverflow,以了解如何按月对DateTime进行分组,并且由于某种原因,即使我通过pd.to.datetime传递数据帧之后,我仍然会收到此错误

  

TypeError:仅与DatetimeIndex,TimedeltaIndex或   PeriodIndex,但有一个'Int64Index'实例

df['Date'] = pd.to_datetime(df['Date'])
df['Date'].groupby(pd.Grouper(freq='M'))

当我提取df['Date']的数据类型时,它显示dtype: datetime64[ns]可以,为什么我会不断收到此错误?

1 个答案:

答案 0 :(得分:1)

原因很简单:您没有将groupby密钥传递给groupby

您想要的是根据df['Date']的内容的月份值对整个数据框进行分组。

但是,df['Date'].groupby(pd.Grouper(freq='M'))的实际作用是首先从DataFrame的pd.Series列中提取Date。然后,它尝试在该Series 上进行分组。如果没有指定键,则默认为尝试按索引分组,该索引当然是数字。

这将起作用:

df.groupby(pd.Grouper(key='Date', freq='M'))