gpt4 book ai didi

python - Groupby 和基于特定行值的计算

转载 作者:行者123 更新时间:2023-12-03 18:30:25 25 4
gpt4 key购买 nike

我有看起来像这样的数据:

d = {'id' : [1, 1, 1, 2, 2, 2],
'levels': ['low', 'perfect', 'high', 'low', 'perfect', 'high'],
'value': [1, 10, 13, 2, 10, 13]}

df = pd.DataFrame(d, columns=['id', 'levels', 'value'])
df = df.groupby(['id','levels'])[['value']].mean()
对于每个 [id, levels],我想找到 value 之间的差异行和 valueperfect排。它看起来像这样:
id | levels | value | penalty
1 | high | 13 | 3
| low | 1 | 9
| perfect| 10 | 0
2 | high | 13 | 3
| low | 2 | 8
| perfect| 10 | 0
例如,在第一行中,您将从完美值 10 中减去 13,得到 3。
那么如何在找到 perfect 的地方进行计算?每个值 [id, levels] ,然后找出差异?

最佳答案

使用 xs 选择数据框的横截面,然后从 level=0 上的给定数据帧中减去该横截面

df['penalty'] =  df['value'].sub(df['value'].xs('perfect', level=1)).abs()
            value  penalty
id levels
1 high 13 3
low 1 9
perfect 10 0
2 high 13 3
low 2 8
perfect 10 0

关于python - Groupby 和基于特定行值的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67662242/

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