按时间间隔分箱列并计算总和

我有熊猫数据帧:


df = pd.DataFrame({

    "computer": [0, 1, 2, 3, 0, 1, 2, 3],

    "time":     [0, 0, 1, 1, 2, 3, 4, 5],

    "value":    [4, 1, 5, 6, 1, 0, 3, 4],

})

df["time"] = pd.to_datetime(df["time"], unit="s")

df.set_index(["computer", "time"])

我想将time列分成 4s 间隔并对values求和。输出将如下所示:


df = pd.DataFrame({

    "computer":   [0, 1, 2, 3, 2, 3],

    "start_time": [0, 0, 0, 0, 4, 4],

    "value":      [5, 1, 5, 6, 3, 4],

})

df["start_time"] = pd.to_datetime(df["start_time"], unit="s")

df.set_index(["computer", "start_time"])

我试图通过时间窗口应用Pandas 组提供的代码,但由于多索引,我无法让它工作。我也试过这个resample方法,但同样的问题也适用。


人到中年有点甜
浏览 147回答 2
2回答

暮色呼如

使用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.secondu   computer  time  value0         0     0      51         1     0      12         2     0      53         3     0      64         2     4      35         3     4      4您可以允许一个调用同时处理“计算机”上的分组和重采样“时间”,而不是单独的groupbyand 。resamplegroupby

宝慕林4294392

使用, 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)输出:                              valuecomputer time                      0        1970-01-01 00:00:00      51        1970-01-01 00:00:00      12        1970-01-01 00:00:00      53        1970-01-01 00:00:00      62        1970-01-01 00:00:04      33        1970-01-01 00:00:04      4
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python