问题描述
假设我下面有df
和d
。我想针对col
中的每一行,检查是否与d
中的项目关键字匹配,如果是,则用相应的项目值替换col
中的值,否则放下那一行。 (最多只能有一场比赛。)
df = pd.DataFrame({'col': ['sdffzdhellojkh','fegky','ouewfzdworldqf']})
d = {'fzdhello': 'hello','fzdworld': 'world'}
df
col
0 hello
1 world
解决方法
series.str.extract然后映射:
df['col'].str.extract('('+ '|'.join(d.keys()) + ')',expand=False).map(d).dropna()
0 hello
2 world
Name: col,dtype: object
,
尝试提取并映射:
df['col'].str.extract('({})'.format('|'.join(d.keys())))[0].map(d).dropna()
输出:
0 hello
2 world
Name: 0,dtype: object