Reputation: 719
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
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