Pandas:每个亚组按月汇总

yqyhoc1h  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(118)

我有以下pandas

TUFNWGTP  TELFS  t070101  t070102  t070103  t070104  \
TUDIARYDATE status                                                              
2003-01-03  emp     8155462.672158      2        0        0        0        0   
2003-01-04  emp     1735322.527819      1        0        0        0        0   
            emp     3830527.482672      2       60        0        0        0   
2003-01-02  unemp   6622022.995205      4        0        0        0        0   
2003-01-09  emp     3068387.344956      1        0        0        0        0

我想将每个子组的每日数据聚合为每月数据。
也就是说,如果没有status子索引,我将

df.resample('M', how='sum')

如何对每个子组进行每月汇总?

nvbavucw

nvbavucw1#

我认为您需要一个DatetimeIndex(而不是MultiIndex):

In [11]: df = df.reset_index('status')

In [12]: df
Out[12]:
            status        TUFNWGTP  TELFS  t070101  t070102  t070103  t070104
TUDIARYDATE
2003-01-03     emp  8155462.672158      2        0        0        0        0
2003-01-04     emp  1735322.527819      1        0        0        0        0
2003-01-04     emp  3830527.482672      2       60        0        0        0
2003-01-02   unemp  6622022.995205      4        0        0        0        0
2003-01-09     emp  3068387.344956      1        0        0        0        0

然后使用每月Grouper * 和 * 状态列执行groupby

In [13]: df.groupby([pd.Grouper(freq='M'), 'status']).sum()
Out[13]:
                           TUFNWGTP  TELFS  t070101  t070102  t070103  t070104
TUDIARYDATE status
2003-01-31  emp     16789700.027605      6       60        0        0        0
            unemp    6622022.995205      4        0        0        0        0

相关问题