我已经搜索了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]
可以,为什么我会不断收到此错误?
答案 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'))