Сдвиг строки в столбце, когда равен определенному значению - PullRequest
1 голос
/ 07 марта 2019

Я хочу сдвинуть 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 ]

3 голосов
/ 07 марта 2019

Вы можете использовать:

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 голос
/ 07 марта 2019

Вы можете использовать:

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
...