在 A 列中搜索字典键的文本,如果找到则将 B 列设置为 Pandas 数据框中的字典值

问题描述 投票:0回答:1

给定一个数据框和一个如下的字典:

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

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

我想搜索每一行以查看 Col 'A' 是否包含字典中的键。如果是这样,我想将 Col 'B' 设置为键的值。

仅使用静态值进行测试,这有效:

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

但这并没有给我字典映射。我试过:

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

但这不正确。有任何想法吗?

python pandas dictionary
1个回答
2
投票

使用

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
© www.soinside.com 2019 - 2024. All rights reserved.