Python Pandas получают значения в соответствии с If / Else - PullRequest
0 голосов
/ 23 октября 2019

Мой входной фрейм данных;

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

Я хочу посчитать разницу между значениями «Порядок» и «Потребность» с кодом ниже;

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

Я хочу, чтобы что-то вроде этого;

If (WarehouseStock-StoreStock)> = Need:

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

Остальное

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

Желаемые выходы:

Количество 3

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

Не могли бы вы помочь мне об этом?

1 Ответ

4 голосов
/ 23 октября 2019

Использование numpy.where с 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))

Вывод:

ind.sum()
# 3

df[ind]
   Order  Need  WarehouseStock  StoreStock
0      1     3              74           5
3      6    12              44          44
4      0     6             644          44
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...