环入数据框熊猫

时间:2020-05-05 17:02:12

标签: python-3.x

我需要编写一个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行

1 个答案:

答案 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') 

有几个问题。

  1. ij上循环执行i*j。因此,您得到的列表的长度为i*j
  2. 我想您的第一个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方法可以完成您的任务。但这也许为您提供了可能的解决方案。