0

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?

1 Answer 1

4

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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.