gpt4 book ai didi

python - 根据条件区分 pandas 中的行

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:20 25 4
gpt4 key购买 nike

我有以下内容。数据框:

region     country  Season  stage   statistic   value   ps     ps_vals
alabama usa 2000 1 median 135.53 0 46.153846
alabama usa 2001 1 median 138.75 0 30.769231
alabama usa 2000 3 median 151 91.11 0
alabama usa 2001 3 median 148.125 46.666 8.333333
california usa 2000 1 median 83.7191 3.2258 100
california usa 2001 1 median 92.6332 6.4516 91.666667
california usa 2000 3 median 49.2137 0 66.666667
california usa 2001 3 median 108.029 58.0645 58.333333

我想创建一个新的数据帧,其中包含 ps_vals 之间的差异,其中 L.H.S 是 stage 3 的值,R.H.D 是 stage 的值> 1. 例如对于阿拉巴马州,2000 年的 stage 3 的 ps_vals 值为 0,2000 年的 stage 值为 46.153846,因此存在差异。将是-46.153846

生成的数据框应如下所示:

region     country  Season  ps_vals
alabama usa 2000 -46.153846
alabama usa 2001 -22.435898
california usa 2000 -33.333333
california usa 2001 -33.333334

如何实现这一目标?我可以像这样区分连续行:df['dA'] = df['A'] - df['A'].shift(-1),但这在这种情况下不起作用因为行可能不连续。

最佳答案

自动将仅使用第 1 阶段值过滤的数据帧与第 3 阶段值进行合并。然后计算现在对齐的 ps_vals 数据之间的差异:

results = df[df.stage==1].merge(df[df.stage==3],
on=['region', 'country', 'Season'],
suffixes = ('_x', ''))

results.ps_vals -= results.ps_vals_x

results[['region', 'country', 'Season', 'ps_vals']]
Out[56]:
region country Season ps_vals
0 alabama usa 2000 -46.153846
1 alabama usa 2001 -22.435898
2 california usa 2000 -33.333333
3 california usa 2001 -33.333334

关于python - 根据条件区分 pandas 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40315322/

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