我有以下数据框(为示例创建):
In [2]: df
Out[2]:
A B
0 1 2
1 1 3
2 4 6
假设这是一个很长的数据帧,只要 B 行中有值 2,我就需要将该值替换为低于该值两个单元格的值。
我尝试过:
for val in df['B']:
if val == 2:
df['B'] = df.B.shift(-2)
但我得到:
A B
0 1 6.0
1 1 NaN
2 4 NaN
我需要:
Out[2]:
A B
0 1 6
1 1 3
2 4 6
是否有人建议保留不等于“2”的行不变?
最佳答案
您可以使用where :
df['B'] = df['B'].where(df['B'] != 2, df['B'].shift(-2))
关于python - 如何使用下面两个单元格的值更新数据帧单元格的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71272232/