gpt4 book ai didi

python - 对 pandas 数据框进行分组,然后通过聚合取abs的平均值

转载 作者:行者123 更新时间:2023-12-01 09:30:51 24 4
gpt4 key购买 nike

我不知道如何执行以下操作:

假设我有一个包含 3 列的 pandas 数据框:ABC

我想首先按A分组,然后对BC进行聚合。假设我想获取 BmeanCmax,那么我可以简单地执行以下操作:

import pandas as pd

df = pd.DataFrame({'A' : ['a', 'a', 'b', 'b'],
'B' :[50, 70, 50, 30] ,
'C' : [100, -150, -110, 180] })

df.groupby("A").agg({"B":"mean", "C":"max"})

但是,我想要做的是获取 C 的 abs 值的 max

我尝试了各种方法,包括this answer中描述的方法,但不知何故,它从来没有给我我想要的东西。我确信这个问题有一个简单的答案......我做错了什么?

预期的输出当然是

C A
a 60 150
b 40 180

最佳答案

我认为需要自定义功能:

df1 = df.groupby("A").agg({"B":"mean", "C":lambda x: x.abs().max()})
print (df1)
C B
A
a 150 60
b 180 40

另一个解决方案是 assign后栏abs值:

df1 = df.assign(C = lambda x: x['C'].abs()).groupby("A").agg({"B":"mean", "C":"max"})

详细信息:

print (df.assign(C = lambda x: x['C'].abs()))
A B C
0 a 50 100
1 a 70 150
2 b 50 110
3 b 30 180

关于python - 对 pandas 数据框进行分组,然后通过聚合取abs的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49981826/

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