добавить определенное значение в строки, выбранные на основе условий с Pandas - PullRequest
0 голосов
/ 29 июня 2018

Если у меня есть следующий фрейм данных:

id        fruits
01     Apple, Apricot
02     Apple, Banana, Clementine, Pear
03     Orange, Pineapple, Pear

Я хочу добавить Fruit в строки, где Apple существует, чтобы сгенерировать новый фрейм данных, подобный этому:

id        fruits
01     Apple, Apricot, Fruit
02     Apple, Banana, Clementine, Pear, Fruit
03     Orange, Pineapple, Pear

Как мне это сделать? Благодарю. Извините, что я изобразил этот пример, чтобы представить мою реальную проблему.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018
df['fruits'] = [row + ', Fruit' if 'Apple' in str(row) else row for row in df['fruits']]
0 голосов
/ 29 июня 2018

Первый взлом, который сработал

fruit = np.array(', Fruit', object)
df.fruits + df.fruits.str.contains('Apple') * fruit

0                     Apple, Apricot, Fruit
1    Apple, Banana, Clementine, Pear, Fruit
2                   Orange, Pineapple, Pear
Name: fruits, dtype: object

Более разумно

df.loc[df.fruits.str.contains('Apple'), 'fruits'] += ', Fruit'
df

   id                                  fruits
0   1                   Apple, Apricot, Fruit
1   2  Apple, Banana, Clementine, Pear, Fruit
2   3                 Orange, Pineapple, Pear

__

Чтобы ответить на комментарий, NA появляется там, где элементы в столбце fruits не были строками. Это подразумевает плохие данные. Неважно, мы можем заполнить NA

Спасибо jezrael за улучшенную реализацию.

df.loc[df.fruits.str.contains('Apple', na=False), 'fruits'] += ', Fruit'
df
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...