簡體   English   中英

Pandas - 根據不同列上的兩個條件刪除行

[英]Pandas - drop rows based on two conditions on different columns

雖然在 Pandas 中回答了幾個相關問題,但我無法解決這個問題。 我有一個大的 dataframe(~ 49000 行)並且想要同時滿足兩個條件(~ 120)刪除行:

  • 對於一列:一個確切的字符串
  • 對於另一列:NaN 值

我的代碼忽略了條件並且沒有刪除任何行。

to_remove = ['string1', 'string1'] 
df.drop(df[df['Column names'].isin(to_remove) & (df['Column value'].isna())].index, inplace=True)

我究竟做錯了什么? 感謝您的任何提示!

您可以為要保留行的條件創建掩碼,而不是調用drop並傳遞index ,然后只取那些行。 此外,似乎存在邏輯錯誤,您正在檢查由AND組合的相同列值的兩個不同條件。

df[~(df['Column1'].isin(to_remove) & (df['Column2'].isna()))]

此外,如果您需要檢查同一列,那么您可能希望通過 or ie |組合條件。 如果需要,您可以最后reset_index

另外,作為旁注,您的列表to_remove有兩個相同的字符串值,我假設這是問題中的錯字。

暫無
暫無

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

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