python - 当等于特定值时移动列中的行

标签 python pandas dataframe shift

当值等于 中的特定值时,我想在 pandas df 中移动 rows >。对于下面的 df,当 A == x 中的值时,我试图将 Column B 中的值移动到 Column A

import pandas as pd

df = pd.DataFrame({
    'A' : [1,'x','x','x',5],
    'B' : ['x',2,3,4,'x'],
        })

这是我的尝试:

df = df.loc[df.A.shift(-1) == df.A.shift(1), 'x'] = df.A.shift(1)

预期输出:

   A  B
0  1  x
1  2
2  3
3  4
4  5  x

最佳答案

您可以使用:

m = df.A.eq('x')
df[m]=df[m].shift(-1,axis=1)
print(df)

   A    B
0  1    x
1  2  NaN
2  3  NaN
3  4  NaN
4  5    x

关于python - 当等于特定值时移动列中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55036882/

相关文章:

python - 使用另一个数据框的值更新数据框 - python

python - 使用 youtube 的 API 在播放列表中插入视频时的 Oauth2.json 文件

python - 返回具有列表索引的 DataFrame 的行

python - 在python中获取a向量的下限值之和

python - 识别前k个值并根据它们各自的排名顺序进行标记

Python3.5 多处理与 Pandas : Process never stop

r - 从 R 中具有某些 NULL 值的对象创建数据框

python - Pandas :选择列,如果不存在则默认

python - 使用 JMESPath 基于另一个查询结果过滤列表

Python,带有函数调用的 if else 语句的简洁代码?