Ich habe einen Pandas-Datenrahmen, der so aussieht (es ist ein ziemlich großer)
date exer exp ifor mat
1092 2014-03-17 American M 528.205 2014-04-19
1093 2014-03-17 American M 528.205 2014-04-19
1094 2014-03-17 American M 528.205 2014-04-19
1095 2014-03-17 American M 528.205 2014-04-19
1096 2014-03-17 American M 528.205 2014-05-17
Jetzt möchte ich Zeile für Zeile iterieren. Während ich durch jede Zeile gehe, kann sich der Wert ifor
in jeder Zeile abhängig von bestimmten Bedingungen ändern, und ich muss einen anderen Datenrahmen nachschlagen.
Wie aktualisiere ich dies jetzt, während ich iteriere? Versuchte ein paar Dinge, von denen keiner funktionierte.
for i, row in df.iterrows():
if <something>:
row['ifor'] = x
else:
row['ifor'] = y
df.ix[i]['ifor'] = x
Keiner dieser Ansätze scheint zu funktionieren. Ich sehe die im Datenrahmen aktualisierten Werte nicht.
<something>
. Ob Ihr Code vektorisiert werden kann, hängt von diesen Dingen ab. Im Allgemeinen vermeiden iterrows
. In Ihrem Fall sollten Sie dies unbedingt vermeiden, da jede Zeile ein object
D-Typ ist Series
.
df.ix[i,'ifor']
.df.ix[i]['ifor']
ist problematisch, weil es sich um eine verkettete Indizierung handelt (was bei Pandas nicht zuverlässig ist).