gpt4 book ai didi

python - 涉及 Pandas 中两列的聚合

转载 作者:行者123 更新时间:2023-12-04 08:10:26 26 4
gpt4 key购买 nike

假设我有一个具有以下结构的 Pandas 数据框:

df = pd.DataFrame(dict(a=["x", "x", "y"], b=[0, 1, 1], c=[1, 2, 2]))
我想按 a 聚合分组并进行依赖于 b 的聚合和 c .我想做类似的事情:
df.groupby("a").agg(lambda df: (df["b"] - df["c"]).sum())
但这会在 Pandas 中引发以下错误:
KeyError: 'b'
有没有一种简单的方法可以在 Pandas 中做到这一点?

我当然知道我可以做类似的事情
df.assign(new_b = lambda df: df["b"] - df["c"]).groupby("a").agg({"new_b": 'sum'})
这给出了以下结果:
   new_b
a
x -2
y -1
但必须有一个更简单的方法。

最佳答案

由于您的运算符是可交换的,您可以执行以下操作:

out = df.groupby('a').sum()
out['new_b'] = out['b'] - out['c']
输出:
   b  c  new_b
a
x 1 3 -2
y 1 2 -1
备注 : 你很接近,这会奏效
df.groupby("a").apply(lambda d: (d["b"] - d["c"]).sum())
不同的是 apply将整个(子)数据帧作为参数,而 agg获取整个(子)数据帧的每一列。

关于python - 涉及 Pandas 中两列的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65996636/

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