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

pri*_*e90 4 python datetime python-3.x pandas-groupby

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

类型错误:仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但获得了“Int64Index”的实例

df['Date'] = pd.to_datetime(df['Date'])
df['Date'].groupby(pd.Grouper(freq='M'))
Run Code Online (Sandbox Code Playgroud)

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

gmd*_*mds 8

原因很简单:您没有将 groupby 键传递给groupby.

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

然而,df['Date'].groupby(pd.Grouper(freq='M'))实际做的是首先pd.Series从 DataFrame 的Date列中提取 a 。然后,它尝试对那个Series执行 groupby ;没有指定的键,它默认尝试按索引分组,这当然是数字。

这将起作用:

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