Tôi có một dataframe gấu trúc với cấu trúc sau:cột số học có điều kiện trong gấu trúc dataframe
import numpy as np
import pandas as pd
myData = pd.DataFrame({'x': [1.2,2.4,5.3,2.3,4.1], 'y': [6.7,7.5,8.1,5.3,8.3], 'condition':[1,1,np.nan,np.nan,1],'calculation': [np.nan]*5})
print myData
calculation condition x y
0 NaN 1 1.2 6.7
1 NaN 1 2.4 7.5
2 NaN NaN 5.3 8.1
3 NaN NaN 2.3 5.3
4 NaN 1 4.1 8.3
Tôi muốn nhập một giá trị trong cột 'tính toán dựa trên các giá trị trong 'x' và 'y' . (ví dụ x/y) nhưng chỉ trong những tế bào nơi cột 'tình trạng' chứa NaN (np.isnan (myData [ 'tình trạng']) các dataframe cuối cùng sẽ trông như thế này:
calculation condition x y
0 NaN 1 1.2 6.7
1 NaN 1 2.4 7.5
2 0.654 NaN 5.3 8.1
3 0.434 NaN 2.3 5.3
4 NaN 1 4.1 8.3
tôi hài lòng với ý tưởng bước qua từng hàng bằng cách sử dụng vòng lặp 'for' và sau đó sử dụng câu lệnh 'if' để tính toán nhưng khung dữ liệu thực tế tôi có là rất lớn và tôi muốn thực hiện các phép tính theo cách dựa trên mảng. Điều này có thể không? Tôi đoán tôi có thể tính giá trị cho tất cả các hàng và sau đó xóa giá trị mà tôi không muốn nhưng điều này có vẻ như rất nhiều nỗ lực lãng phí (các NaN khá hiếm trong khung dữ liệu) và trong một số trường hợp 'điều kiện' bằng 1 , việc tính toán không thể được thực hiện do chia cho số không.
Xin cảm ơn trước.
Perfect! Cảm ơn bạn. – user1718097