Панды - копирование одного столбца в другой без эффективной перезаписи

1

У меня есть столбцы A и B, где столбец A редко имеет данные, а столбец B полностью заполнен. Я хочу скопировать столбец B в столбец A и всегда сохранять любое значение, которое столбец A имеет над столбцом B.

Длина моего кадра данных составляет около 1,5 миллиона, поэтому df.iterrows() - это решение, однако это будет очень трудоемким. Есть ли оптимизированная функция панды или трюк, чтобы сделать это максимально эффективно?

  • 4
    df.A = df.A.fillna (df.B)
Теги:
pandas

2 ответа

2
Лучший ответ

Я бы использовал.loc, чтобы это сделать

df.loc[df['A'].isnull(), 'A'] = df['B']

Это читается так: расположен где столбец "А" равен нулю и задан столбец "А", равный столбцу "В".

  • 0
    Я могу провести быстрое сравнение производительности, но вы можете знать, какой из них быстрее?
  • 1
    iterrows будет абсолютно медленным. Весь смысл панд в том, чтобы распараллеливать такие операции; в противном случае вы можете просто использовать набор значений.
Показать ещё 2 комментария
2

Вы можете попробовать что-то вроде

df["A"][df["A"].isna()] = df["B"][df["A"].isna()]

Изменение: комментатор указал, что в этой проблеме уже существует метод в пандах, поэтому используйте это вместо этого.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню