簡體   English   中英

在pandas數據框中,如何檢查同一行但不同列中是否存在兩個字符串?

[英]In a pandas dataframe, how do I check if two strings exist on same row but in different columns?

因此,我一直在嘗試找出如何編寫最簡單的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()

但是當我需要在兩列中檢查兩個不同的字符串時該怎么辦?

使用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"')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM