gpt4 book ai didi

python - 使用 sum() 和 mean() 进行分组

转载 作者:行者123 更新时间:2023-12-04 14:49:19 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Get statistics for each group (such as count, mean, etc) using pandas GroupBy?

(8 个回答)



Aggregation in Pandas

(2 个回答)


2个月前关闭。




我有一堆数据框,我将它们连接成一个大数据框。所有行都有一个日期时间、一个名称,然后是一些带有随机值的列,例如数据框可能类似于:

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 分钟的垃圾箱,我目前的做法如下:
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
这可以以任何方式完成,还是我必须将我的数据框分成两个,然后再加入?

最佳答案

使用 DataFrameGroupBy.agg用字典:

df.groupby([pd.Grouper(freq="60min", key="ds"), "name"]).agg({'val1': 'mean', 'val2': sum, 'val3': 'mean'})

关于python - 使用 sum() 和 mean() 进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69314189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com