gpt4 book ai didi

Python pandas groupby 与按列过滤的其他行的区别

转载 作者:行者123 更新时间:2023-11-28 20:18:15 25 4
gpt4 key购买 nike

我正在为 Python Pandas 和 groupby 苦苦挣扎。我应该如何完成以下任务?对于每种水果,我想找出与该水果的“步骤 0”值的差异。

df = pd.DataFrame({'Fruit' : ['Apple', 'Apple', 'Apple', 'Banana', 'Banana', 'Banana'], 'Step' : [0, 1, 2, 0, 1, 2], 'Value' : [100, 102, 105, 200, 210, 195] })

Fruit Step Value to-be
0 Apple 0 100 --> 0
1 Apple 1 102 --> 2
2 Apple 2 105 --> 5
3 Banana 0 200 --> 0
4 Banana 1 210 --> 10
5 Banana 2 195 --> -5

谢谢!

最佳答案

应该这样做:

df.groupby('Fruit').apply(lambda g: g.Value - g[g.Step == 0].Value.values[0])

首先,我们按您关心的列(水果)分组。然后我们对每个组应用一个函数(使用 lambda 让我们指定一个在线函数)。对于每个组,我们找到 g.Step == 0 的行,然后从该行获取 Value 条目,并使用 values[0] 获取第一个值(如果有多个地方 g.Step == 0)。然后我们只需从组中的所有行中减去那个值,然后返回它。

如果要将其作为列添加到数据框中,可以删除索引:

res = df.groupby('Fruit').apply(lambda g: g.Value - g[g.Step == 0].Value.values[0])
df['Result'] = res.reset_index(drop=True)

关于Python pandas groupby 与按列过滤的其他行的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37212250/

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