gpt4 book ai didi

python - 如何使用 pandas groupby 对多列求和?

转载 作者:太空狗 更新时间:2023-10-30 01:57:53 25 4
gpt4 key购买 nike

我有一个看起来像的数据框

day  type  col  d_1  d_2  d_3  d_4  d_5...
1 A 1 1 0 1 0
1 A 2 1 0 1 0
2 B 1 1 1 0 0

也就是说,我有一个普通的列(col)和许多以d_为前缀的列

我需要按天和类型执行分组,我想计算每个日期类型组合的每个 d_ 列中值的总和。我还需要对数据中的其他列执行其他聚合函数(例如示例中的 col)

我可以使用:

agg_df=df.groupby(['day','type']).agg({'d_1': 'sum', 'col': 'mean'})

但这只计算一个 d_ 列的总和。如何在我的数据中指定所有可能的 d_ 列?

换句话说,我想写这样的东西

agg_df=df.groupby(['day','type']).agg({'d_*': 'sum', 'col': 'mean'})

所以预期的输出是:

day  type  col  d_1  d_2  d_3  d_4  d_5...
1 A 1.5 2 0 2 0 ...
2 B 1 1 1 0 0

如您所见,col 是按平均值聚合的,而 d_ 列是求和的。

感谢您的帮助!

最佳答案

IIUC 您需要使用 d_* 列对您的 groupby 数据框进行子集化。您可以找到带有 str.contain 的列并将其传递给 groupby 数据框:

cols = df.columns[df.columns.str.contains('(d_)+|col')]
agg_df=df.groupby(['day','type'])[cols].sum()


In [150]: df
Out[150]:
day type col d_1 d_2 d_3 d_4
0 1 A 1 1 0 1 0
1 1 A 2 1 0 1 0
2 2 B 1 1 1 0 0

In [155]: agg_df
Out[155]:
col d_1 d_2 d_3 d_4
day type
1 A 3 2 0 2 0
2 B 1 1 1 0 0

注意:我按照您的要求将 col 列添加到 contains 模式。您可以指定任何您想要的正则表达式,并使用 | 符号传递它。

关于python - 如何使用 pandas groupby 对多列求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35269765/

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