如何基於 Pandas DataFrame 中的列值刪除行

  1. .drop 方法刪除 Pandas DataFrame 中列值的行
  2. 布林遮蔽方法刪除 Pandas DataFrame 中的行

我們將介紹通過使用 .drop(帶有和不帶有 loc)和布林掩碼檢查列值的條件來基於 DataFrame 刪除行的方法。

风水2023年的颜色提示 fs
风水2023年的颜色提示 fs

.drop 方法刪除 Pandas DataFrame 中列值的行

.drop 方法接受一個或一列列名,並刪除行或列。對於行,我們設定引數 axis=0,對於列,我們設定引數 axis=1(預設情況下,axis0)。我們還可以得到 TrueFalse 系列列值,根據應用於 Pandas DataFrame 中的條件。

示例程式碼:

# python 3.x
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ) ,
             ('Mango', 24, 'No' ) ,
             ('banana', 14, 'No' ) ,
             ('Apple', 44, 'Yes' ) ,
             ('Pineapple', 64, 'No') ,
             ('Kiwi', 84, 'Yes')  ]
  
#Create a DataFrame object
df = pd.DataFrame(fruit_list, columns = 
                  ['Name' , 'Price', 'Stock']) 
# Get names of indexes for which column Stock has value No
indexNames = df[ df['Stock'] == 'No' ].index
# Delete these row indexes from dataFrame
df.drop(indexNames , inplace=True)
print(df)

輸出:

     Name  Price Stock
0  Orange     34   Yes
3   Apple     44   Yes
5    Kiwi     84   Yes

我們也可以通過在 df.drop 方法中使用 .loc 來獲得類似的結果。

df.drop(df.loc[df['Stock']=='Yes'].index, inplace=True)

我們還可以基於多個列值刪除行。在上面的示例中,我們可以刪除價格 >=30 和價格 <=70 的行。

示例程式碼:

# python 3.x
import pandas as pd
# List of Tuples
fruit_list = [ ('Orange', 34, 'Yes' ) ,
             ('Mango', 24, 'No' ) ,
             ('banana', 14, 'No' ) ,
             ('Apple', 44, 'Yes' ) ,
             ('Pineapple', 64, 'No') ,
             ('Kiwi', 84, 'Yes')  ]
  
#Create a DataFrame object
df = pd.DataFrame(fruit_list, columns = 
                  ['Name' , 'Price', 'Stock'])
indexNames = df[ (df['Price'] >= 30)
                & (df['Price'] <= 70) ].index
df.drop(indexNames , inplace=True)
print(df)

輸出:

     Name  Price Stock
1   Mango     24    No
2  banana     14    No
5    Kiwi     84   Yes

價格大於 30 且小於 70 的行已被刪除。

布林遮蔽方法刪除 Pandas DataFrame 中的行

布林遮蔽 boolean masking 是基於列值刪除 Pandas DataFrame 中的行的最好,最簡單的方法。

示例程式碼:

# python 3.x
import pandas as pd
# List of Tuples
fruit_list = [ ('Orange', 34, 'Yes' ) ,
             ('Mango', 24, 'No' ) ,
             ('banana', 14, 'No' ) ,
             ('Apple', 44, 'Yes' ) ,
             ('Pineapple', 64, 'No') ,
             ('Kiwi', 84, 'Yes')  ]
  
#Create a DataFrame object
df = pd.DataFrame(fruit_list, columns = 
                  ['Name' , 'Price', 'Stock'])
print(df[df.Price > 40])
print('............................')
print(df[(df.Price > 40) & (df.Stock== 'Yes')])  

輸出:

        Name  Price Stock
3      Apple     44   Yes
4  Pineapple     64    No
5       Kiwi     84   Yes
............................
    Name  Price Stock
3  Apple     44   Yes
5   Kiwi     84   Yes

相關文章 - Pandas DataFrame

  • 如何將 Pandas DataFrame 列標題獲取為列表
  • 如何刪除 Pandas DataFrame 列
  • 如何在 Pandas 中將 DataFrame 列轉換為日期時間
  • 如何在 Pandas DataFrame 中將浮點數轉換為整數