Создать новый столбец Python DataFrame на основе условий нескольких других столбцов - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь создать новый столбец DataFrame (столбец C) на основе входных данных двух других столбцов. У меня есть два критерия: если «Столбец A равен> 0» ИЛИ «Столбец B содержит строку« Apple », * тогда столбец C должен иметь значение« Да », в противном случае он должен иметь значение« Нет »

* Бонусные баллы, если в ответе не учитывается регистр (то есть он поднимет «яблоко» в «Ананасе», а также в «Яблочном соке»

Данные могут выглядеть так (и к чему должен привести столбец C)

Column_A Column_B           Column_C  
23       Orange Juice       Yes  
2        Banana Smoothie    Yes  
8        Pineapple Juice    Yes  
0        Pineapple Smoothie Yes  
0        Apple Juice        Yes  
0        Lemonade           No  
34       Coconut Water      Yes

Я пробовал несколько вещей, в том числе:

df['Keep6']= np.where((df['Column_A'] >0) | (df['Column_B'].find('Apple')>0) , 'Yes','No')

Но получаю сообщение об ошибке: "AttributeError: 'Series' object has no attribute 'find'"

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Использование Series.str.contains с case=False до без учета регистра :

df['Column_C']= np.where((df['Column_A']>0) | (df['Column_B'].str.contains('apple', case=False)) ,'Yes','No')
print(df)

   Column_A            Column_B Column_C
0        23        Orange_Juice      Yes
1         2     Banana_Smoothie      Yes
2         8     Pineapple_Juice      Yes
3         0  Pineapple_Smoothie      Yes
4         0         Apple_Juice      Yes
5         0            Lemonade       No
6        34       Coconut_Water      Yes
0 голосов
/ 08 октября 2019

Попробуйте этот код, используя pandas.Dataframe.apply Функция:

df['Column_C'] = df.apply(lambda row: 'Yes' if (row['Column_A']>0) | (row['Column_B'].lower().find('apple')>=0) else 'No', axis=1)

и дает:

   Column_A            Column_B Column_C
0        23        Orange Juice      Yes
1         2     Banana Smoothie      Yes
2         8     Pineapple Juice      Yes
3         0  Pineapple Smoothie      Yes
4         0         Apple Juice      Yes
5         0            Lemonade       No
6        34       Coconut Water      Yes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...