if语句为字符串变量创建新的列熊猫

问题描述

使用此数据框,我想基于第一列的值创建另一列。

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','cherries']:
       df['item_type']=='fruit'
   else:
       df['item_type']=='meat'

df = df.apply(item_type)

解决方法

使用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