我需要编写一个for循环,该循环将首先检查列度,然后检查列分数。
IF degree > 90 AND score < 90 THEN create new column say TRUE ELSE say FALSE.
因此,新列RESULT
中的结果应为:TRUE,FALSE,FALSE,TRUE。
谢谢
# dictionary of lists
dict = {'degree': [90, 40, 80, 98],
'score':[70, 70, 70, 70]}
# creating a dataframe from a dictionary
df = pd.DataFrame(dict)
代码和错误消息
result = []
for i,j in df.itertuples(index=False):
if i > 90:
if j <90 result.append('ISTRUE')
else: result.append('ISFALSE')
df['RESULT'] = result
文件“”,如果j <90 ^ SyntaxError:语法无效,则第5行
答案 0 :(得分:0)
我不确定您要做什么,所以我猜。您所需的输出如下所示:
degree score RESULT
90 70 TRUE
40 70 FALSE
80 70 FALSE
98 70 TRUE
因此您创建的循环
for i,j in df.itertuples(index=False):
if i > 90:
if j < 90:
result.append('ISTRUE')
else:
result.append('ISFALSE')
有几个问题。
i
和j
上循环执行i*j
。因此,您得到的列表的长度为i*j
。if
条件应该是>=
,而不是>
。您的代码应如下所示:
result = []
for i in range(0, df.shape[0]):
if df['degree'][i] >= 90 and df['score'][i] < 90:
result.append('ISTRUE')
else:
result.append('ISFALSE')
df['RESULT'] = result
我对python不太熟悉,所以我想还有更多的pythonic方法可以完成您的任务。但这也许为您提供了可能的解决方案。