У меня есть фрейм данных панд, который выглядит следующим образом (это довольно большой)
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
Теперь я хотел бы перебирать ряд за строкой, и, когда я прохожу каждую строку, значение ifor
в каждой строке может меняться в зависимости от некоторых условий, и мне нужно искать другой фрейм данных.
Теперь, как мне обновить это, когда я повторяюсь. Перепробовал несколько вещей, ни одна из которых не сработала.
for i, row in df.iterrows():
if <something>:
row['ifor'] = x
else:
row['ifor'] = y
df.ix[i]['ifor'] = x
Ни один из этих подходов не работает. Я не вижу обновленных значений в кадре данных.
<something>
. Возможность векторизации вашего кода будет зависеть от этих вещей. В общем, избегайте iterrows
. В вашем случае вам определенно следует избегать этого, поскольку каждая строка будет object
dtype Series
.
df.ix[i,'ifor']
.df.ix[i]['ifor']
проблематично, потому что это цепная индексация (которая не надежна в пандах).