Salih
Salih

Reputation: 719

Python Pandas Get Values According to If/Else

My input dataframe;

Order    Need   WarehouseStock   StoreStock
1        3      74               5
0        4      44               44
0        0      44               44
6        12     44               44
0        6      644              44
6        6      44               44

I want to count whether any difference or not among "Order" and Need values with below code;

difference = df['Need'] - df['Order']
mask = difference.between(-1,1)                                                              
print (f'Count: {(~mask).sum()}')

I want to that something like this;

If (WarehouseStock-StoreStock) >= Need:

difference1 = df['Need'] - df['Order']
mask1 = difference1.between(-1,1)                                                              
print (f'Count: {(~mask1).sum()}')

Else

difference2 = df['Need'] - df['Order']
mask2 = difference2.between(-5,5)                                                              
print (f'Count: {(~mask2).sum()}')

Desired Outputs are;

Count 3

Order    Need   WarehouseStock   StoreStock
1        3      74               5
6        12     44               44
0        6      644              44

Could you please help me about this?

Upvotes: 0

Views: 40

Answers (1)

Chris
Chris

Reputation: 29742

Using numpy.where with pandas.Series.between:

import pandas as pd
import numpy as np

s = df['Need'] - df['Order']
ind = np.where((df['WarehouseStock'] - df['StoreStock']).ge(df['Need']), ~s.between(-1, 1), ~s.between(-5 , 5))

Output:

ind.sum()
# 3

df[ind]
   Order  Need  WarehouseStock  StoreStock
0      1     3              74           5
3      6    12              44          44
4      0     6             644          44

Upvotes: 4

Related Questions