Переносить / копировать значение NaN в другой столбец DF Pandas

1

У меня есть df, который выглядит так:

|  id | qty  | item |
+-----+------+------+
| 001 |  700 | CB04 |
| 002 |  500 | NaN  |
| 003 | 1500 | AB01 |

Я хочу скопировать значения NaN из df['item'] в df['qty'], чтобы он выглядел так:

|  id | qty  |   item   |
+-----+------+----------+
| 001 |  700 | CB04 box |
| 002 |  NaN | NaN      |
| 003 | 1500 | AB01 box |

я сделал следующее

df['qty'] = df.loc[df['item'].isnull(),'item']

но мой df оказался таким.

|  id | qty |   item   |
+-----+-----+----------+
| 001 | NaN | CB04 box |
| 002 | NaN | NaN      |
| 003 | NaN | AB01 box |
Теги:
pandas

1 ответ

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

Ваш подход не работает, потому что вы выбираете item столбца, когда он равен нулю, и устанавливаете qty равным этому результату, который всегда NaN, поэтому он заполняет qty с помощью NaN

Используйте loc с булевым индексированием и установите нужный столбец. Вы были близки, просто не совсем правильно.

df.loc[df.item.isnull(), 'qty'] = np.nan

   id     qty  item
0   1   700.0  CB04
1   2     NaN   NaN
2   3  1500.0  AB01

Также, используя np.where (немного быстрее, когда я тестировал на np.where)

df.qty = np.where(df.item.isnull(), np.nan, df.qty)

Ещё вопросы

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