等于特定值的情况下移动“列”中的行

时间:2019-03-07 05:48:58

标签: python pandas dataframe shift

当值等于rows中的特定值时,我想将pandas移到df Column中。对于下面的df,我尝试将Column B中的值转换为Column A中的值到A == x

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

2 个答案:

答案 0 :(得分:3)

您可以使用:

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

答案 1 :(得分:1)

您可以使用:

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

print(df)

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