Замена элементов в кадре данных PANDAS - PullRequest
0 голосов
/ 04 декабря 2018

Ниже приведена таблица:

    A NUMBER    B NUMBER
    7042967611  9999574081
    12320       9999574081
    9999574081  9810256463
    9999574081  9716551924
    9716551924  9999574081  
    9999574081  8130945859

Изначально это был лист Excel, который был преобразован в фрейм данных.Я хочу поменять местами некоторые элементы, чтобы в столбце чисел A было только 9999574081. Поэтому выходные данные должны выглядеть следующим образом:

    A NUMBER    B NUMBER
    9999574081  7042967611  
    9999574081  12320       
    9999574081  9810256463
    9999574081  9716551924
    9999574081  9716551924  
    9999574081  8130945859

Это код, который я использовал:

for i in list(df['A NUMBER']):
    j=0
    if i!= 9999574081:
        temp = df['B NUMBER'][j]
        df['B NUMBER'][j] = i
        df['A NUMBER'][j] = temp
    j+=1

Однако я не получаю желаемого результата.Пожалуйста, помогите мне.Спасибо:)

1 Ответ

0 голосов
/ 04 декабря 2018

Используйте DataFrame.loc для булевых масок, соответствующих только строкам подкачки, values необходимо для избежания выравнивания значений индекса:

m = df['A NUMBER'] != 9999574081

df.loc[m, ['A NUMBER','B NUMBER']] = df.loc[m, ['B NUMBER','A NUMBER']].values

Другое решение сnumpy.where:

df['B NUMBER'] = np.where(df['A NUMBER'] != 9999574081, df['A NUMBER'], df['B NUMBER'])
df['A NUMBER'] = 9999574081

print (df)
     A NUMBER    B NUMBER
0  9999574081  7042967611
1  9999574081       12320
2  9999574081  9810256463
3  9999574081  9716551924
4  9999574081  9716551924
5  9999574081  8130945859
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...