gpt4 book ai didi

python - 如何减去引用 Pandas 中关联列的行值

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

我想根据其他列中的值减去行中的连续值。

数据框如下所示:

     A        B    
1 "Sat" 7
2 "Sat" 9
3 "Sat" 5
4 "Sun" 8
5 "Sun" 4
6 "Sun" 6

我想引用 A 列减去 B 列的连续值,输出应该是这样的:

     A        B    
1 "Sat" 0
2 "Sat" +2
3 "Sat" -4
4 "Sun" 0
5 "Sun" -4
6 "Sun" 2

我一直在使用 df.diff() 在整个数据帧中完成此操作,但这里它类似于 (key, value),其中键来自 A 列,多个值来自 B 列。我想减去 B 列中的值,只要 A 列中的键是“Sat”,当它遇到 A 列中的第二个键“Sun”时应该重新开始减法。

对解决这个问题有什么帮助吗?

最佳答案

必要时优先sort_valuesA 列,然后使用 groupbydiff , 用于替换 NaN fillna :

df['B'] = df.sort_values('A').groupby('A')['B'].diff().fillna(0)
print (df)
A B
1 Sat 0.0
2 Sat 2.0
3 Sat -4.0
4 Sun 0.0
5 Sun -4.0
6 Sun 2.0

如果需要转换为int:

df['B'] = df.sort_values('A').groupby('A')['B'].diff().fillna(0).astype(int)
print (df)
A B
1 Sat 0
2 Sat 2
3 Sat -4
4 Sun 0
5 Sun -4
6 Sun 2

另一种解决方案 diff , 如果 mask 则添加 0不等于 shift通过 ne 编辑 A 列:

df['B'] = df.B.diff().mask(df.A.ne(df.A.shift()), 0)
print (df)
A B
1 Sat 0.0
2 Sat 2.0
3 Sat -4.0
4 Sun 0.0
5 Sun -4.0
6 Sun 2.0

关于python - 如何减去引用 Pandas 中关联列的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43316590/

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