如何查找列表是否是数据框列中字符串的子字符串



我面临着从数据帧列内的列表中查找子字符串的挑战

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.findallSeries.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

最新更新