【发布时间】:2021-11-17 16:32:52
【问题描述】:
我有一堆数据帧,我将它们连接成一个大数据帧。所有行都有一个日期时间、一个名称,然后是一些带有随机值的列,例如数据框可能类似于:
df =
ds name val1 val2 val3
-------------------------------------------------------
2021-07-31 23:23:00 name1 2 3 4
2021-07-31 23:56:00 name2 3 4 5
2021-07-31 23:11:00 name1 4 5 6
2021-07-31 23:34:00 name2 5 6 7
我现在需要将这些行按name 分组,并将它们分成 60 分钟的 bin,我目前的做法如下:
final_df = df.groupby([pd.Grouper(freq="60min", key="ds"), "name"]).mean()
然后输出是一个新的数据框,其中行按name 分组,然后val 列值只是该name 的所有值的平均值。
这行得通。但是,我想做的不是取所有列的平均值,也许val2 列应该是值的总和,而不是平均值。
所以基本上最终的输出应该是:
df_final =
ds name val1 val2 val3
-------------------------------------------------------
2021-07-31 23:00:00 name1 3 7 5
2021-07-31 23:00:00 name2 4 10 6
这可以通过任何方式完成,还是我必须将我的数据框分成两部分,然后再加入?
【问题讨论】:
标签: python pandas pandas-groupby