我有以下代码,应该将0或1放入INDICATOR
列,具体取决于if-then规则(列T
和S
的值):
rawdata_base['INDICATOR'] = rawdata_base.apply(lambda row:
'1' if row['T']=='2' and str(row['S']).isdigit() and int(row['S'])<15
else '0' if row['T']=='2' and str(row['S']).isdigit() and int(row['S'])>=15
else '1' if row['T']=='1' and str(row['S']).isdigit() and int(row['S'])<35
else '0' if row['T']=='1' and str(row['S']).isdigit() and int(row['S'])>=35
else '0' if 'A' in row['S']
else '0', axis 1)
我无法弄清楚为什么错误invalid syntax
会弹出else '0', axis 1
答案 0 :(得分:1)
你不能在python中堆栈这样的条件。三元条件运算符只能接受3个输入(因此三元组):a if b else c
。
如果你想叠加它们,那么我不认为你想要lambda
。自己动手:
def myfunc(row):
if row['T']=='2' and str(row['S']).isdigit() and int(row['S'])<15:
return '1'
elif row['T']=='2' and str(row['S']).isdigit() and int(row['S'])>=15:
return '0'
...
然后在.apply
函数中,传递myfunc
答案 1 :(得分:1)
你遗失了&#39; =&#39;。应该是&#39;轴= 1&#39;不是&#39;轴1&#39;
答案 2 :(得分:0)
正如@gipsy所提到的,其中一个错误是缺少=
(axis=1
)。但是,主要错误是在此代码行str
elif 'A' in str(row['S']):