Python pandas:如果key在其他列中,如何为新列赋值

时间:2018-05-09 01:50:35

标签: python-3.x pandas

我有一个数据框,想要检查一列中字符串的任何部分是否是给定字典中的键,如果是,则将此键的值分配给新列。

dict = {'Apple': 'Fruit', 'Chicken': 'Meat'}

expected df:

#     String           New Column
# 1   'Red apple'      'Fruit'
# 2   'Fried chicken'  'Meat'

我发现这篇文章与我需要做的非常接近,但我找不到使用字典的解决方案:python pandas if column string contains word flag

我希望这是有道理的,谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我们需要在您的dict和您的df中将所有键的字符更改为大写字母,然后我们只需apply并使用检查功能

d={x.upper(): y for x,y in d.items()}

df['New']=df.String.str.upper().apply(lambda x : ''.join([v if k in x  else '' for k,v in d.items()]))

df
          String    New
0      Red apple  Fruit
1  Fried chicken   Meat