我认为这可能是个小问题,但我对编码还是个新手。我使用以下代码对我的数据进行了分类。但我需要命令,例如,如果不是我的所有条件都满足类别术语,例如,只考虑7个条件中的4个,并给我提到的类别。我该怎么做?我真的很感激你能提供的任何帮助。
c1=df['Stroage Condition'].eq('refrigerate')
c2=df['Profit Per Unit'].between(100,150)
c3=df['Inventory Qty']<20
df['Restock Action']=np.where(c1&c2&c3,'Hold Current stock level','On Sale')
print(df)
假设这是您的数据帧:
Stroage Condition refrigerate Profit Per Unit Inventory Qty
0 0 1 0 20
1 1 1 102 1
2 2 2 5 2
3 3 0 100 8
条件就是你定义的条件:
c1=df['Stroage Condition'].eq(df['refrigerate'])
c2=df['Profit Per Unit'].between(100,150)
c3=df['Inventory Qty']<20
然后,您可以定义一个lambda函数,并将其传递给np.where()
函数。在那里,您可以定义有多少条件必须为True。在本例中,我将该值设置为至少两个。
def my_select(x,y,z):
return np.array([x,y,z]).sum(axis=0) >= 2
最后你又运行了一行:
df['Restock Action']=np.where(my_select(c1,c2,c3), 'Hold Current stock level', 'On Sale')
print(df)
这将打印到控制台:
Stroage Condition refrigerate Profit Per Unit Inventory Qty Restock Action
0 0 1 0 20 On Sale
1 1 1 102 1 Hold Current stock level
2 2 2 5 2 Hold Current stock level
3 3 0 100 8 Hold Current stock level
如果您有更多的条件或规则,则可以使用与规则一样多的变量来扩展lambda函数。