搜索A列中的文本以获得dict键,如果找到,则将B列设置为Pandas数据框中的dict值

ryevplcw  于 2023-04-04  发布在  其他
关注(0)|答案(1)|浏览(104)

给定一个dataframe和一个dict如下:

Col A             Col B  
f3s34Roger         nan  
bll23Dawn          nan  
Misty3r2w          nan  
efJunea4l          nan  

vendor_dict = {'Roger': 'cups','Charlie':'plates','Misty':'bowls'}

我想搜索每一行,看看Col 'A'是否包含dict中的键。如果包含,我想将Col 'B'设置为键的值。
只使用静态值进行测试,这是可行的:

df['Col B'] = np.where(df['Col A'].str.find('Roger'),'', 'cups')

但这并没有给予我dictMap。我试过:

df['Col B'] = np.where(df['Col A'].str.find().map(vendors)

但这是不对的有什么想法吗

aelbi1ox

aelbi1ox1#

使用str.findall然后使用map

df['Col B']=df['Col A'].str.findall('|'.join(vendor_dict.keys())).str[0].map(vendor_dict)
0     cups
1      NaN
2    bowls
3      NaN
Name: ColA, dtype: object

相关问题