如何使用pd.Grouper按月对日期进行分组?
问题描述
我搜索了stackoverflow以了解如何按月对日期时间进行分组,但由于某些原因,我一直收到此错误,即使我通过pd.to.datetime
TypeError:仅对DatetimeIndex、TimedeltaIndex或 PerodIndex,但获取了"Int64Index"的实例
df['Date'] = pd.to_datetime(df['Date'])
df['Date'].groupby(pd.Grouper(freq='M'))
当我拉取df['Date']
的数据类型时,它显示dtype: datetime64[ns]
有什么想法,为什么我一直收到此错误?
解决方案
原因很简单:您没有将Groupby密钥传递给groupby
。
您想要的是根据df['Date']
内容的月值对整个数据帧进行分组。
df['Date'].groupby(pd.Grouper(freq='M'))
实际做的是首先从DataFrame的Date
列提取一个pd.Series
。然后,它尝试对Series
执行GROUPBY;如果没有指定的键,它将默认尝试按索引分组,索引当然是数字的。
这将起作用:
df.groupby(pd.Grouper(key='Date', freq='M'))
相关文章