Tôi có một khung dữ liệu gấu trúc trông như thế này (nó khá lớn)
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
bây giờ tôi muốn lặp lại từng hàng và khi tôi đi qua từng hàng, giá trị của ifor
mỗi hàng có thể thay đổi tùy thuộc vào một số điều kiện và tôi cần tra cứu một khung dữ liệu khác.
Bây giờ, làm thế nào để tôi cập nhật điều này khi tôi lặp lại. Đã thử một vài điều không ai trong số họ làm việc.
for i, row in df.iterrows():
if <something>:
row['ifor'] = x
else:
row['ifor'] = y
df.ix[i]['ifor'] = x
Không có cách tiếp cận nào có vẻ hiệu quả. Tôi không thấy các giá trị được cập nhật trong khung dữ liệu.
<something>
. Liệu mã của bạn có thể được vector hóa hay không sẽ phụ thuộc vào những điều đó. Nói chung, tránh iterrows
. Trong trường hợp của bạn, bạn chắc chắn nên tránh nó vì mỗi hàng sẽ là một object
dtype Series
.
df.ix[i,'ifor']
.df.ix[i]['ifor']
là vấn đề bởi vì nó được lập chỉ mục chuỗi (không đáng tin cậy trong gấu trúc).