【问题标题】:Python Pandas Get Values According to If/ElsePython Pandas 根据 If/Else 获取值
【发布时间】:2020-02-19 15:51:35
【问题描述】:

我的输入数据框;

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()}')

我想要这样的东西;

如果 (WarehouseStock-StoreStock) >= 需要:

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

你能帮我解决这个问题吗?

【问题讨论】:

    标签: python pandas dataframe if-statement conditional-statements


    【解决方案1】:

    numpy.wherepandas.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
    

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 1970-01-01
      • 2012-02-02
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 2018-08-01
      • 2019-03-22
      相关资源
      最近更新 更多