Pandas – FillNa с другим столбцом

Я хотел бы заполнить недостающее значение в одном столбце значением другого столбца.

Я читал, что цикл по каждой строке будет очень плохой практикой и что было бы лучше сделать все за один раз, но я не мог узнать, как это сделать с fillna метода fillna .

Данные перед

 Day Cat1 Cat2 1 cat mouse 2 dog elephant 3 cat giraf 4 NaN ant 

Данные после

 Day Cat1 Cat2 1 cat mouse 2 dog elephant 3 cat giraf 4 ant ant 

3 Solutions collect form web for “Pandas – FillNa с другим столбцом”

Вы можете предоставить этот столбец fillna (см. fillna ), он будет использовать эти значения для соответствия индексов для заполнения:

 In [17]: df['Cat1'].fillna(df['Cat2']) Out[17]: 0 cat 1 dog 2 cat 3 ant Name: Cat1, dtype: object 

Вы могли бы сделать

 df.Cat1 = np.where(df.Cat1.isnull(), df.Cat2, df.Cat1) 

Общая конструкция на RHS использует тройную схему из поваренной книги pandas (которую она платит, чтобы читать в любом случае). Это векторная версия a? b: c a? b: c .

Просто используйте параметр value вместо method :

 In [20]: df Out[20]: Cat1 Cat2 Day 0 cat mouse 1 1 dog elephant 2 2 cat giraf 3 3 NaN ant 4 In [21]: df.Cat1 = df.Cat1.fillna(value=df.Cat2) In [22]: df Out[22]: Cat1 Cat2 Day 0 cat mouse 1 1 dog elephant 2 2 cat giraf 3 3 ant ant 4 
  • Pandas, выбирающий по метке, иногда возвращает серию, иногда возвращает dataframe
  • Как получить количество строк в кадре данных Pandas?
  • обновить pandas.DataFrame в группе после .groupby ()
  • KeyError в pandas to_datetime с использованием пользовательского формата
  • Pandas DataFrame: Как печатать одну строку по горизонтали?
  • Python Pandas DataFrame считывает точный заданный диапазон в листе excel
  • pandas различение между строками и объектами
  • Преобразование столбца временных меток в периоды в пандах
  • Python - лучший язык программирования в мире.