我的熊猫逻辑似乎没有达到我想要的结果,无论我做了多少测试和更改


df['col1'] = df.loc[((df['NGPC PT'] > 1) | ((df['SC'] < 2)& (df['SC'] > 5)) & ((df['NGPC PT'] >4) & (df['NGPC PT'] <7))),'RULE OF NGPC'] ='SO'

基本上有两个值,这应该给出OBS和SO,OBS是col1的标准值,每当这些值不满足以下要求时,它们就会变为SO。

*注意以下请求在C#中:

d["RULE OF NGPC"] = (v["PT"].Equals("5") || v["PT"].Equals("6")) ? "OBS" : "SO";
int COUNT = 0;
if(v["PT"].Equals("1"))
{
if ((v["SC"].Equals("2"))&&(COUNT==0))
{
COUNT = COUNT + 1;
d["RULE OF NGPC"] = (v["PT"].Equals("1") && v["SC"].Equals("2")) ? "OBS" : "SO";
}
if ((v["SC"].Equals("3")) && (COUNT == 0))
{
COUNT = COUNT + 1;
d["RULE OF NGPC"] = (v["PT"].Equals("1") && v["SC"].Equals("3")) ? "OBS" : "SO";

}
if ((v["SC"].Equals("4")) && (COUNT == 0))
{
COUNT = COUNT + 1;
d["RULE OF NGPC"] = (v["PT"].Equals("1") && v["SC"].Equals("4")) ? "OBS" : "SO";

}
if ((v["SC"].Equals("5")) && (COUNT == 0))
{
COUNT = COUNT + 1;
d["RULE OF NGPC"] = (v["PT"].Equals("1") && v["SC"].Equals("5")) ? "OBS" : "SO";

}

}

d["NGPC PT"] = v["PT"];
d["SC"] = v["SC"];

上面C#中的代码不是我的,我正在尝试将其转换为python。

我建议您首先用"OBS"初始化列,然后根据您的条件替换值:

df['output'] = 'OBS'
df.loc[((df['NGPC PT'] > 1) | ((df['SC'] < 2)& (df['SC'] > 5)) & ((df['NGPC PT'] >4) & (df['NGPC PT'] <7))),'output'] = 'SO'

如果表达式中没有任何条件是错误的,这可能会起作用。

最新更新