在pandas数据框中,如何检查同一行但不同列中是否存在两个字符串?

时间:2019-02-01 14:48:09

标签: python pandas dataframe

因此,我一直在尝试找出如何编写最简单的if语句,以便检查在任何行的rootID中是否存在字符串“ A”,在parentID中是否存在“ B”字符串。然后,我想删除该行。在这种情况下,我希望在这种情况下删除第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 :(得分:2)

boolean indexing与由https://www.google.co.jp/amp/s/www.traicy.com/20190127-ktrdia%3famp=1链接的掩码(对于|bitwise OR一起使用,用于反转布尔掩码。

如果需要检查子字符串:

~

如果需要检查字符串,请使用Series.ne

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

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