оператор if для создания новых панд столбцов для строковой переменной

#python #python-3.x #pandas #if-statement

#python #python-3.x #pandas #if-statement

Вопрос:

С помощью этого фрейма данных я хотел бы создать еще один столбец, основанный на значениях первого столбца.

 data = {'item_name':  ['apple', 'banana', 'cherries', 'duck','chicken','pork']}
df = pd.DataFrame (data, columns = ['item_name'])
  
 Expected df:
item_name  item_type
apple      fruit
banana     fruit
cherries   fruit
duck       meat
beef       meat
pork       meat
  

Код, который я пробовал:

 def item_type(item_name):
   if df['item_name'] is in ['apple','banana','cherries']:
       df['item_type']=='fruit'
   else:
       df['item_type']=='meat'

df = df.apply(item_type)
  

Ответ №1:

Используйте np.where :

 df['item_type'] = np.where(df['item_name'].isin(['apple','banana','cherries']),
                           'fruit', 'meat')
  

Вывод:

   item_name item_type
0     apple     fruit
1    banana     fruit
2  cherries     fruit
3      duck      meat
4   chicken      meat
5      pork      meat