我面临着从数据帧列内的列表中查找子字符串的挑战
list =['ab', 'bc', 'ca']
DF1
Index|A
0 |ajbijio_ab_jadds
1 |bhjbj_ab_jiui
Expected OUTPUT:
DF
ab
ab
我写了一些东西,但它给出了错误不可散列类型:"列表">
DF1['A'].str.lower().str.contains(list)
使用 str.extract
前任:
import pandas as pd
lst =['ab','bc','ca']
df = pd.DataFrame({"A": ["ajbijio_ab_jadds", "bhjbj_ab_jiui", "Hello World"]})
df["Found"] = df["A"].str.extract("(" + "|".join(lst) + ")")
print(df)
输出:
A Found
0 ajbijio_ab_jadds ab
1 bhjbj_ab_jiui ab
2 Hello World NaN
如果需要,请使用Series.str.extract
仅与正则表达式OR
join
列表|
匹配:
L =['ab','bc','ca']
df['new'] = df['A'].str.extract('('+ '|'.join(L) + ')')
print (df)
A new
0 ajbijio_ab_jadds ab
1 bhjbj_ab_jiui ab
如果需要,所有匹配项都使用Series.str.findall
与Series.str.join
:
df['new'] = df['A'].str.findall('|'.join(L)).str.join(',')
我正在使用findall
df["Found"] = df["A"].str.findall("|".join(lst)).str[0]
df
Out[82]:
A Found
0 ajbijio_ab_jadds ab
1 bhjbj_ab_jiui ab
2 Hello World NaN