![](/img/trans.png)
[英]Groupby apply or agg with custom function with multiple inputs
[英]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.