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

У меня есть 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

Ответы [ 3 ]

0 голосов
/ 22 сентября 2018

Для обобщенного способа сделать это можно использовать 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
0 голосов
/ 22 сентября 2018

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
0 голосов
/ 22 сентября 2018

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