фильтрация кадра данных по значениям в списке - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть следующий кадр данных: -

enter image description here

Я хочу фильтровать везде, где есть 11 в claim_status

и для claim_ststaus_reason для aa1.

Я пытаюсь использовать приведенный ниже код, но он просто дает мне все строки

my_list = 'aa1'

df[df['claim_status_reason'].str.contains( "|".join(my_list), regex=True)].reset_index(drop=True)

Ожидаемый результат: -

1.) where there is 11 in claim_ststus 
2.) where there is aa1 in the claim_status_reason

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Вы можете использовать apply для получения желаемого фильтра, например:

df[(df['claim_staus'].apply(lambda x: 11 in x)) & (df['claim_status_reason'].apply(lambda x: 'a1' in x))]
0 голосов
/ 02 ноября 2018

Не используйте строковые операции со списками внутри серии. Вместо этого вы можете использовать списки. Ваш выбор структуры данных - это анти-панды, потому что вы должны стараться не ставить списки в серии в первую очередь. Эти операции не являются векторизованными.

mask1 = np.array([11 in x for x in df['claim_staus']])
mask2 = np.array(['aa1' in x for x in df['claim_status_reason']])

df = df[mask1 & mask2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...