pandas:如何按时间和列分组

Rom*_*uin 5 python

我有一个销售产品列表,我想按产品按月对销售额进行分组。我正在使用数据框,其索引是时间索引,并且有一个列产品。

我试过 :

df.groupby(['product', pd.TimeGrouper(freq='1M')])['sales'].sum()
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误:“TimeGrouper”对象不可调用

我也尝试过

df.groupby(pd.TimeGrouper(freq='1M')).groupby('sales').sum()
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误:无法访问“dataframegroupby”对象的可调用属性“groupby”。

有任何想法吗 ?

PS:我无法将工作中的粘贴代码复制到互联网上。

Seb*_*ian 7

这对我有用。我不确定你为什么会收到 TypeError...

df.groupby(['product', pd.TimeGrouper('1M')])['sales'].sum()
Run Code Online (Sandbox Code Playgroud)


Ale*_*der 2

您可以向 DataFrame 添加另一列并将其用于分组:

df['month'] = [ts.month for ts in df.index]
df.groupby(['product', 'month'])['sales'].sum()
Run Code Online (Sandbox Code Playgroud)