2017-08-08 70 views
0

我试图使用if-else和for-loop将值添加到'Overall'列中,但它似乎不起作用。将值添加到DataFrame Python 3.0

我使用的是从我的数据框的“合计”列中的值来确定“Overall'column值通过或故障。]

for index, row in Score.iterrows(): 
     if Score['Total']>=100: 
      Score.insert(index,'Overall', 'Pass') 
      else: 
      Score.insert(index,'Overall', 'Fail') 

     Name Maths English Total Overall 
    0 Tom  50 50  100 
    1 Jack  80 50  130 
    2 Tim  70 80  150 
    3 Hen   1 84  85 

Attached picture of the problem

enter image description here

回答

0
Score['Overall'] = Score['Total'].map(lambda x: 'Pass' if x>=100 else 'Fail') 
+0

Danche:我很好奇lambda x的功能是什么? – user234568

+0

@ user234568'lambda x'只是定义一个函数操作,您还可以单独定义一个名为'func'的函数,并使用'Series.map(func)'。 – danche

0

考虑使用矢量化np.where()

In [128]: Score 
Out[128]: 
    Name Maths English Total 
0 Tom  50  50 100 
1 Jack  80  50 130 
2 Tim  70  80 150 
3 Hen  1  84  85 

In [129]: Score['Overall'] = np.where(Score['Total'] >= 100, 'Pass', 'Fail') 

In [130]: Score 
Out[130]: 
    Name Maths English Total Overall 
0 Tom  50  50 100 Pass 
1 Jack  80  50 130 Pass 
2 Tim  70  80 150 Pass 
3 Hen  1  84  85 Fail 
+0

MaxU你怎么知道它是否是numpy或熊猫的声明?我对python还是比较陌生的,所以我在numpy和pandas之间有点混乱? – user234568