简体   繁体   中英

Pandas: How to delete the rows that meet conditions by filter?

import pandas as pd

data={"product_name":["Keyboard","Mouse", "Monitor", "CPU","CPU", "Speakers",pd.NaT],
      "Price":[500,None, 5000.235, None, 10000.550, 250.50,None],
      "Final_Price":[5,None, 10, None, 20, 8,None],
      "Available_Quantity":[5,9,6,None,6, 5,8],
      "Available_Since_Date":['11/5/2021', '4/23/2021', '08/21/2021','09/18/2021','09/18/2021','01/05/2021',pd.NaT]
   }

df = pd.DataFrame(data)
df

The filter to find the rows that meet the condition

myfilter= (df.query("Price=='Nan' and Final_Price=='Nan'and Available_Quantity >=5 "))
myfilter

It works because I found the rows that I want. Now I want to delete that rows of the DataFrame but not using df.loc or df.iloc because in a bigger DataFrame that would not be useful.

here is one way to do it, using index

df.drop(df[(df['Price'].isnull()) & 
           (df['Final_Price'].isnull()) & 
           (df['Available_Quantity'] > 5.0)].index)
    product_name    Price   Final_Price     Available_Quantity  Available_Since_Date
0   Keyboard        500.000     5.0         5.0                 11/5/2021
2   Monitor         5000.235    10.0        6.0                 08/21/2021
3   CPU             NaN         NaN         NaN                 09/18/2021
4   CPU             10000.550   20.0        6.0                 09/18/2021
5   Speakers        250.500     8.0         5.0                 01/05/2021

I am not sure what you want though using query we could do:

df.query('Price.isna() & Final_Price.isna() & Available_Quantity > 5')

  product_name  Price  Final_Price  Available_Quantity Available_Since_Date
1        Mouse    NaN          NaN                 9.0            4/23/2021
6          NaT    NaN          NaN                 8.0                  NaT

df.query('~(Price.isna() & Final_Price.isna() & Available_Quantity > 5)') 

  product_name      Price  Final_Price  Available_Quantity Available_Since_Date
0     Keyboard    500.000          5.0                 5.0            11/5/2021
2      Monitor   5000.235         10.0                 6.0           08/21/2021
3          CPU        NaN          NaN                 NaN           09/18/2021
4          CPU  10000.550         20.0                 6.0           09/18/2021
5     Speakers    250.500          8.0                 5.0           01/05/2021

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM