python - 如何使用下面两个单元格的值更新数据帧单元格的值?

标签 python python-3.x pandas

我有以下数据框(为示例创建):

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/

相关文章:

python-3.x - 如何在 14 列的数据框中对 8 列的 python 进行 KMeans 聚类?

python - 删除列表中数字的倍数 :

python - 将负值更改为 0,而不更改其他列

python - 使用 pywinauto 时不写入日志文件

python - 没有得到弹性的整数类型

python - 在 python 3 中打印 next() 的问题

python - 从 pandas 生成 QVD 文件?

Python/Pandas - get_group 具有部分字符串

python - numpy.rint 没有按预期工作

python - 如何测试字符串是否以大写字母开头?