Как узнать, является ли список подстрокой строки в столбце фрейма данных? - PullRequest
1 голос
/ 22 апреля 2019

Я столкнулся с проблемой поиска подстроки из списка внутри столбца DataFrame

list =['ab', 'bc', 'ca']

DF1
Index|A
0    |ajbijio_ab_jadds
1    |bhjbj_ab_jiui

Expected OUTPUT:
DF
ab
ab

Я написал что-то, но это дает ошибку непригодный для печати тип: 'list'

DF1['A'].str.lower().str.contains(list)

Ответы [ 3 ]

1 голос
/ 22 апреля 2019

Используйте Series.str.extract, если необходимо сначала сопоставить только с join списком | для регулярных выражений OR:

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(',')
1 голос
/ 22 апреля 2019

Я использую 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
1 голос
/ 22 апреля 2019

Использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...