Tôi có một khung dữ liệu gấu trúc trông như thế này (một khá lớn của nó)Cập nhật một dataframe trong gấu trúc trong khi lặp lại từng hàng
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 từng hàng và như tôi đi thông qua mỗi hàng, giá trị của ifor
trong 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 cách nào để 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ó phương pháp nào trong số này có vẻ hữu hiệu. Tôi không thấy các giá trị được cập nhật trong khung dữ liệu.
Tôi nghĩ rằng bạn muốn 'df.ix [i, 'ifor'] '. 'df.ix [i] ['ifor']' có vấn đề vì nó được lập chỉ mục chuỗi (không đáng tin cậy trong gấu trúc). –
Bạn có thể cung cấp khung hình khác cũng như ''. Liệu mã của bạn có thể được vector hóa hay không sẽ phụ thuộc vào những thứ đó. Nói chung, tránh 'iterrows'. Trong trường hợp của bạn, bạn nên * chắc chắn * tránh nó vì mỗi hàng sẽ là một 'object' dtype' Series'. –
Bạn nên tạo mặt nạ boolean cho điều kiện của mình, cập nhật tất cả các hàng đó rồi đặt phần còn lại thành giá trị khác – EdChum