当等于特定值时,在列中移动行

问题描述 投票:1回答:2

当值等于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
python pandas dataframe shift
2个回答
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
投票

您可以使用:

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
© www.soinside.com 2019 - 2024. All rights reserved.