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

Итак, я пытался выяснить, как написать простейший оператор if, чтобы проверить, существует ли строка «A» в rootID и «B» в parentID в любой из строк.Затем я хочу удалить этот ряд.В следующем кадре данных я хотел бы удалить строку 0. В этом случае

                     rootID   parentID    jobID  time
                  0    A         B          D    2019-01-30 14:33:21.339469
                  1    E         F          G    2019-01-30 14:33:21.812381
                  2    A         C          D    2019-01-30 15:33:21.812381
                  3    E         E          F    2019-01-30 15:33:21.812381
                  4    E         F          G    2019-01-30 16:33:21.812381

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

   if df['rootID'].str.contains("A").any()

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

1 Ответ

0 голосов
/ 01 февраля 2019

Используйте boolean indexing с масками, прикованными | для bitwise OR и ~ для инвертированных логических масок.

При необходимости проверьте подстроки:

m1 = ~df['rootID'].str.contains("A")
m2 = ~df['parentID'].str.contains("B")

Если необходимо проверить строки, используйте Series.ne:

m1 = df['rootID'].ne("A")
m2 = df['parentID'].ne("B")

#alternatives
#m1 = df['rootID'] != "A"
#m2 = df['parentID'] != "B"

df = df[m1 | m2]

print (df)
  rootID parentID jobID                        time
1      E        F     G  2019-01-30 14:33:21.812381
2      A        C     D  2019-01-30 15:33:21.812381
3      E        E     F  2019-01-30 15:33:21.812381
4      E        F     G  2019-01-30 16:33:21.812381

Другое решение:

df = df.query('rootID != "A" | parentID != "B"')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...