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

标签 python pandas

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

假设我有一个包含 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/

相关文章:

python - 如何使用 pandas 将 excel 文件数据转换为 numpy 数组?

python Pandas : Passing Multiple Functions to agg() with Arguments

python - Django 管理员 : timezone display

python - 使用 pandas 样式功能更改多级索引字体

python - pandas 类型转换的 h2o 框架

python - 如何将变量分配给 json 响应?

Python Panda 数据框 - 从字符串到日期的整行

python - 如何修复 Qtab 并在选项卡区域创建更多按钮和文本行

python - 排除 Python 键入注释中的类型

python - 将 cache() 和 count() 应用于 Databricks 中的 Spark Dataframe 非常慢 [pyspark]