熊猫:或如果值包含“-”,则执行

时间:2019-01-11 14:24:38

标签: python pandas

我有以下代码(已翻译):

m1 = df['stock']>=1
m2 = (df['stock']==0) & (df['date'].notna())
df['deliverytime'] = np.select([m1, m2], ['2-4 days', df['date']], 'unknown')

因此,这意味着:当库存大于0(1)时,则需要2-4天,否则,请检查日期,如果库存为0,并且没有日期,则将显示“未知” 。

现在以下内容;供应商还添加了负库存值,例如-10,-5等。

我想修改“ m2”,这样它说:stock = 0,库存带有“-”符号,并且日期不为空,然后这样做。

最好的方法是什么?

谢谢!

-编辑-简单数据框-

stock,date
2,9-9-2019
-4,9-9-2019

2 个答案:

答案 0 :(得分:1)

我认为您需要按位==<=更改为&,将|更改为OR

m2 = (df['stock']<=0) | (df['date'].notna())

答案 1 :(得分:0)

我添加了两行代码,以将负值替换为0,这是一种不同的方法,但是有效!

2行是:

num = df._get_numeric_data()
num[num < 0] = 0

感谢您补充并检查所有内容!