簡體   English   中英

在 pandas dataframe 中的多個條件下刪除行

[英]Drop rows on multiple conditions in pandas dataframe

我的 df 有 3 列

df = pd.DataFrame({"col_1": (0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0), 
                   "col_2": (0.0, 0.24, 1.0, 0.0, 0.22, 3.11, 0.0),
                    "col_3": ("Mon", "Tue", "Thu", "Fri", "Mon", "Tue", "Thu")}) 

我想刪除 df.col_1 為 1.0 且 df.col_2 為 0.0 的行。 所以,我會得到:

df = pd.DataFrame({"col_1": (0.0, 0.0, 1.0, 0.0, 1.0), 
                   "col_2": (0.0, 0.24, 1.0, 0.22, 3.11),
                    "col_3": ("Mon", "Tue", "Thu", "Mon", "Tue")})

我試過了:

df_new = df.drop[df[(df['col_1'] == 1.0) & (df['col_2'] == 0.0)].index]

它給了我錯誤:

'method' object is not subscriptable

知道如何解決上述問題嗎?

drop是一種方法,您使用[]調用它,這就是它為您提供的原因:

'method' object is not subscriptable

更改為() (一個正常的方法調用),它應該可以工作:

import pandas as pd

df = pd.DataFrame({"col_1": (0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0),
                   "col_2": (0.0, 0.24, 1.0, 0.0, 0.22, 3.11, 0.0),
                   "col_3": ("Mon", "Tue", "Thu", "Fri", "Mon", "Tue", "Thu")})

df_new = df.drop(df[(df['col_1'] == 1.0) & (df['col_2'] == 0.0)].index)
print(df_new)

輸出

   col_1  col_2 col_3
0    0.0   0.00   Mon
1    0.0   0.24   Tue
2    1.0   1.00   Thu
4    0.0   0.22   Mon
5    1.0   3.11   Tue

嘗試使用 loc 過濾您的 df。 太強大了! “~”表示你想保留那些與你的情況相反的人。 “:”表示您要保留所有列

df = df.loc[~((df['col_1'] == 1.0) & (df['col_2'] == 0.0)),:]

您可以為此使用或 (|) 運算符,請參閱此鏈接pandas: multiple conditions while indexing data frame - unexpected behavior

即刪除同時滿足兩個條件的行

 df = df.loc[~((df['col_1']==1) | (df['col_2']==0))]
mask = df['Product_Code'].isin(['filter1', 'filter2', 'filter3'])
df = df[~mask]
df.head()

.isin()允許您根據系列中的多個值過濾整個數據框。 與我所知道的其他解決方案相比,這是要編寫的最少代碼量。

在按列過濾器中添加~會反轉isin()的邏輯。

將要刪除的行的位置放在“位置”。

df = df.drop(['location' axix=1, inplace=True]

您也可以在此處使用query

In [4]: df.query('~(col_1 == 1 & col_2 == 0)')
Out[4]: 
   col_1  col_2 col_3
0    0.0   0.00   Mon
1    0.0   0.24   Tue
2    1.0   1.00   Thu
4    0.0   0.22   Mon
5    1.0   3.11   Tue

使用~查詢被否定,返回條件col_1 == 1 & col_2 == 0不成立的那些觀察結果。

暫無
暫無

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

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