Как определить, находится ли элемент столбца в другом столбце?

1

У меня есть DataFrame с именем df, и я хочу знать item столбца, содержит ли элемент a и c.

import pandas as pd
df=pd.DataFrame({'id':[1,2,3],'item':['a,b,c','c,d,e','a,b']})

Input:

df
    id   item
0   1  a,b,c
1   2  c,d,e
2   3    a,b

В новом столбце contain_a 1 представляет item столбца, содержащий элемент a, который совпадает с столбцом contain_c.

Expected:

df
    id   item  contain_a contain_c
0   1  a,b,c          1       1
1   2  c,d,e          0       1
2   3    a,b          1       0
Теги:
pandas
dataframe

3 ответа

2
Лучший ответ

Попробуйте str.contains()

df['contains_a'] = df.item.str.contains('a').astype(int)

df['contains_c'] = df.item.str.contains('c').astype(int)

>>> df
   id   item  contains_a  contains_c
0   1  a,b,c           1           1
1   2  c,d,e           0           1
2   3    a,b           1           0

Или вы можете сделать это в цикле:

to_check = ['a','c']

for i in to_check:
    df[f'contains_{i}'] = df.item.str.contains(i).astype(int)
4

Для обобщенного способа выполнения этого можно использовать str.get_dummies указанием разделителя

df.item.str.get_dummies(',').add_prefix('contains_')


    contains_a  contains_b  contains_c  contains_d  contains_e
0   1           1           1           0           0
1   0           0           1           1           1
2   1           1           0           0           0
1

pandas.Series.str.findall

df.join(
    df.item.str.findall('(a|c)')
           .str.join('|')
           .str.get_dummies().add_prefix('contains_')
)

   id   item  contains_a  contains_c
0   1  a,b,c           1           1
1   2  c,d,e           0           1
2   3    a,b           1           0

Ещё вопросы

Сообщество Overcoder
Наверх
Меню