Как извлечь строки, которые частично совпадают строки во всех записях столбца - PullRequest
0 голосов
/ 14 октября 2019

У меня есть приведенный ниже кадр данных со столбцом «Ошибки»

+----------+----------+---------+--------+
|student_id|      name|timestamp|Errors  |
+----------+----------+---------+--------+
|        s1|  testuser|       t1|E1|E2|E3|
|        s1|sampleuser|       t2|E2|E4|E5|
|        s2|   test123|       t1|E7|E6|E3|
|        s2| sample123|       t2|E3|E3|E3|
+----------+----------+---------+--------+

Я хочу отфильтровать строки только с определенной ошибкой (скажем, «E3»). В этом примере я хотел использовать только последнюю строку.

Для простоты я заменил сообщения об ошибках на «E1, E2 и т. Д.» В этом кадре данных. Но в реальном сценарии у меня будет длинная строка сообщений об ошибках, конкатенированных с использованием разделителя ('|') в данном случае

Ответы [ 2 ]

1 голос
/ 14 октября 2019

IIUC

err = 'E3'
mask = df.Errors.str.split('|').apply(lambda x: all(e==err for e in x))

df[mask]
#   student_id       name timestamp    Errors
# 3         s2  sample123        t2  E3|E3|E3
0 голосов
/ 14 октября 2019

другой способ замаскировать:

mask = df['error'].apply(lambda x: True if not re.sub('E3|\|','',x) else False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...