繁体   English   中英

如何将函数应用于 GroupBy agg

[英]How to apply function to GroupBy agg

我有以下 groupby 效果不佳,因为我想对绝对值求和。

DF.groupby(["Name"], as_index=False).agg({"A":"sum",'B': 'first'}).round(2)

如何在求和之前添加将值转换为绝对值的规则?

姓名 一个
测试 3 布拉布拉
测试 -3

我目前的输出是

姓名 一个
测试 0 布拉布拉

例外的输出是

姓名 一个
测试 6 布拉布拉

我将如何apply一个取绝对值然后对它们求和的函数?

.apply(lambda Nb: Nb.abs().sum())

请注意,我知道如何在没有 agg 的情况下做到这一点:

DF.groupby(["Name"], as_index=False)['A'].apply(lambda Nb: Nb.abs().sum()).round(2)

您可以提供函数作为传递给pandas.DataFrame.agg的 dict 值,请考虑以下示例

import pandas as pd
df = pd.DataFrame({'Name':['A','A','B','B','C','C'],'Value':[-1,2,-3,4,-5,6]})
grouped = df.groupby('Name').agg({'Value':lambda x:sum(abs(x))})
print(grouped)

输出

      Value
Name
A         3
B         7
C        11

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM