Home > database >  Check three column condtion and delete based on condition
Check three column condtion and delete based on condition

Time:01-30

I have following dataframe df in pandas

    item    purchase_date   purchase_qty    purchase_price  other_adjustments     sold
0   0040030     2022-01     0   0.00             0                0.0
1   0050064     2022-01     0   0.00            -5                854.0
2   0050066     2022-01     0   0.00            2979                  0.0
3   0050202     2022-01     0   0.00            14673                 1320.0
4   0050204     2022-01     0   0.00            2538                  0.0

I need to delete rows if all purchase_qty,other_adjustments and sold is 0.

I tried this

test_df = df[(df['purchase_qty'] != 0) & (df['other_adjustments'] != 0) & (df['sold'] != 0)]

This code delete all purchase_qty where it's value is 0 but what I want is to check those 3 column and if all three are 0 then delete. Please help me

CodePudding user response:

You need use or condition

test_df = df[(df['purchase_qty'] != 0) | (df['other_adjustments'] != 0) | (df['sold'] != 0)]

Or you can do an inverse operation

test_df = df[~((df['purchase_qty'] == 0) & (df['other_adjustments'] == 0) & (df['sold'] == 0))]

CodePudding user response:

You can filter 3 columns if at least one value is not 0 - so deleted rows with all 0 in 3 columns:

test_df = df[df[['purchase_qty','other_adjustments','sold']].ne(0).any(axis=1)] 
print (test_df)
    item purchase_date  purchase_qty  purchase_price  other_adjustments  \
1  50064       2022-01             0             0.0                 -5   
2  50066       2022-01             0             0.0               2979   
3  50202       2022-01             0             0.0              14673   
4  50204       2022-01             0             0.0               2538   

     sold  
1   854.0  
2     0.0  
3  1320.0  
4     0.0  

CodePudding user response:

You can try this:

test_df = df[(df['purchase_qty'] != 0) | (df['other_adjustments'] != 0) | (df['sold'] != 0)]

This state: if one of these value is not 0 then keep it, otherwise, filter out.

  • Related