J'ai un cadre de données pandas qui ressemble à ceci (c'est un assez gros)
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
maintenant, je voudrais itérer ligne par ligne et au fur et à mesure que je parcours chaque ligne, la valeur de ifor
dans chaque ligne peut changer en fonction de certaines conditions et je dois rechercher une autre trame de données.
Maintenant, comment puis-je mettre à jour cela pendant que j'itère. J'ai essayé quelques choses, aucune d'entre elles n'a fonctionné.
for i, row in df.iterrows():
if <something>:
row['ifor'] = x
else:
row['ifor'] = y
df.ix[i]['ifor'] = x
Aucune de ces approches ne semble fonctionner. Je ne vois pas les valeurs mises à jour dans la trame de données.
<something>
. La possibilité de vectoriser votre code dépendra de ces éléments. En général, évitez iterrows
. Dans votre cas, vous devez absolument l' éviter car chaque ligne sera un object
dtype Series
.
df.ix[i,'ifor']
.df.ix[i]['ifor']
est problématique car il s'agit d'une indexation chaînée (ce qui n'est pas fiable chez les pandas).