gpt4 book ai didi

python - 部分字符串匹配时提取字符串-pandas

转载 作者:太空宇宙 更新时间:2023-11-04 11:18:17 24 4
gpt4 key购买 nike

让我们考虑以下数据框:

df=pd.DataFrame({'colA':['1234_usa_Name1_xyz','9876_usa_Abc Name2',
'123>>usa>>Name3_xyz','123>>abc_usa>>Name4']})

以及以下列表:

l=['abc name1','abc Name2','Name3',"Name4"]


我正在尝试从 colA 系列中提取匹配的名称(不区分大小写)并准确返回系列中的内容 -->(大小写必须与系列相同) .我试过:

p=r'({})'.format("|".join([i.title() for i in l]))
#"(Abc Name1|Abc Name2|Name3|Name4)"
df.colA.str.extract(p,expand=False)

这给了我:

[NaN, 'Abc Name2', 'Name3', 'Name4']

预期:

['Name1','Abc Name2','Name3','Name4']

我也尝试过将列表和系列都转换为 lower() 但这不会在输出中保留大小写。

series.str.extract() 中的 flags 参数可以吗?来救我?似乎无法解决这个问题。

感谢我得到的所有帮助。

最佳答案

如果 partially 表示部分单词,请将 re.findallpd.Series.apply 一起使用:

import re
p=r'({})'.format("|".join([i.title() for i in l])).replace(' ', '|')
df['colA'].apply(lambda x: ' '.join(re.findall(p, x)))

输出:

0        Name1
1 Abc Name2
2 Name3
3 Name4
Name: colA, dtype: object

关于python - 部分字符串匹配时提取字符串-pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56545962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com