Добавлять текст только к ненулевым значениям панды Dataframe - PullRequest
0 голосов
/ 12 июня 2018

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

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

Я хочу добавить текст box к df['item'], где элементы не равны нулю, поэтому New df будет выглядеть следующим образом:

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

1 Ответ

0 голосов
/ 12 июня 2018

Для меня рабочий раствор без чека NaN с:

df['item'] += ' box'
print (df)
   id   qty      item
0   1   700  CB04 box
1   2   500       NaN
2   3  1500  AB01 box

Решения с чеком NaN с:

Использование notna с loc

df.loc[df['item'].notna(), 'item'] += ' box'
#for oldier pandas versions
#df.loc[df['item'].notnull(), 'item'] += ' box'
print (df)
   id   qty      item
0   1   700  CB04 box
1   2   500       NaN
2   3  1500  AB01 box

Или numpy.where:

df['item'] = np.where(df['item'].notna(), df['item'] + ' box',  df['item'])
#df['item'] = np.where(df['item'].notnull(), df['item'] + ' box',  df['item'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...