我有以下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')
如何为每个子组进行每月汇总?
答案 0 :(得分:6)
我认为你需要一个DatetimeIndex(而不是一个MultiIndex):
In [11]: df1 = df.reset_index('status')
In [12]: df1
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
然后使用月度TimeGrouper 和状态列执行groupby:
In [13]: df1.groupby([pd.TimeGrouper('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