2016-10-11 2 views
0

Ich versuche, eine Spalte von einem Wert von 0 auf einen Wert von 1 zu aktualisieren, wenn bestimmte Bedingungen erfüllt sind. Hier ist mein Code:Bedingte Aktualisierung Datenrahmen Spalte

df_['win'] = 0 
df_.loc[df_['predicted_spread'] > df_['vegas_spread'] and df_['actual_spread'] > df_['vegas_spread'], 'win'] = 1 

Dies ist der Fehler Ich erhalte:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

Hat jemand irgendwelche Ideen, was hier vor sich geht?

Antwort

1

Wenn boolean Indizierung tun Sie den logischen Operator für and verwenden müssen, die & ist. Siehe die doc here für weitere Informationen

df['win'] = 0 
cond_1 = df['predicted_spread'] > df['vegas_spread'] 
cond_2 = df['actual_spread'] > df['vegas_spread'] 
df.loc[cond_1 & cond_2, 'win'] = 1 

Im Grunde nur Ihre Antwort mit & statt and. Ich habe es nur umgeschrieben, um es ein wenig klarer zu machen.

+0

Funktioniert hervorragend! Vielen Dank! – user3294779

1

Versuchen

df_['win'] = 0 
df_.loc[df_['predicted_spread'].gt(df_['vegas_spread']) and df_['actual_spread'].gt(df_['vegas_spread']), 'win'] = 1 
Verwandte Themen