我对如何将函数应用于数据帧感到困惑。一般来说,在创建用户定义的函数时,我熟悉最终产生“返回”值。除此之外,我需要在数据帧列的每个单元格中显示“return”值,我无法理解这一点。该函数基于“if”和“if else”条件语句,我不确定如何将其应用于我的数据帧。也许我遗漏了括号或括号,但我不能完全确定。我将在下面解释
我有以下数据帧:
Day No_employee? No_machinery? Production_potential
---------------------------------------------------------------------------
0 Day 1 1 0 5
1 Day 2 1 1 4
2 Day 3 0 1 3
3 Day 4 1 0 8
4 Day 5 0 0 6
5 Day 6 0 1 3
6 Day 7 0 0 5
7 Day 8 1 1 2
...
现在,我想采用我的dataframe并根据以下逻辑附加一个名为Production_lost
的新列:
在工厂里,要生产产品,你需要1)一名员工在场,2)一台运转正常的机器。若你们不能生产任何产品,那个么那个潜在的产品就变成了丢失的产品
对于每一天(考虑工厂),如果No_employee?
为真(=1),则无论No_machinery?
和Production_lost
=Production_potential
如何,都无法生产任何产品。如果No_machinery?
为真(=1),则无论No_employee?
和Production_lost
=Production_potential
,都不能生产任何产品。只有当No_employee?
和No_machinery?
都为0时Production_lost
=0。如果您有一名员工在场且机器正常工作,则不会出现生产损失
因此,我有以下代码:
df['Production_loss'] = df['No_employee?'].apply(lambda x: df['Production_potential'] if x == 1.0 else df['Production_potential'] * df['No_machinery?'])
这将生成以下错误消息:
ValueError: Wrong number of items passed 70, placement implies 1
我理解这意味着有太多的参数被应用于一个列(我想),但我不知道如何解决这个问题,或者我是如何解决这个问题的。有没有简单的解决办法
我尝试生成的数据帧如下所示:
Day No_employee? No_machinery? Production_potential Production_lost
-----------------------------------------------------------------------------------------------
0 Day 1 1 0 5 5
1 Day 2 1 1 4 4
2 Day 3 0 1 3 3
3 Day 4 1 0 8 8
4 Day 5 0 0 6 0
5 Day 6 0 1 3 3
6 Day 7 0 0 5 0
7 Day 8 1 1 2 2
...
努比,在哪里
无需使用apply,请改用pd.Series.where:
您还可以使用乘法:
相关问题 更多 >
编程相关推荐