2 回答

TA贡献1853条经验 获得超9个赞
使用groupby有pd.Grouper:
u = (df.groupby(['computer', pd.Grouper(key='time', freq='4s')])
.sum()
.sort_index(level=1)
.reset_index())
u['time'] = u['time'].dt.second
u
computer time value
0 0 0 5
1 1 0 1
2 2 0 5
3 3 0 6
4 2 4 3
5 3 4 4
您可以允许一个调用同时处理“计算机”上的分组和重采样“时间”,而不是单独的groupbyand 。resamplegroupby

TA贡献2021条经验 获得超8个赞
使用, reset_index, thengroupby和resample:
df.reset_index(level=0).groupby('computer').resample('4s')['value']\
.sum().to_frame().sort_index(level=1)
或者
df.reset_index('computer').groupby('computer').resample('4s')['value']\
.sum().to_frame().sort_index(level=1)
输出:
value
computer time
0 1970-01-01 00:00:00 5
1 1970-01-01 00:00:00 1
2 1970-01-01 00:00:00 5
3 1970-01-01 00:00:00 6
2 1970-01-01 00:00:04 3
3 1970-01-01 00:00:04 4
添加回答
举报