2017-08-08 7 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

ダンチェ:ラムダ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かpandasかどうかどのように分かりますか?私はまだPythonにはまだ新しいので、numpyとpandasの間に少し混乱がありますか? – user234568

関連する問題