Tôi đang cố gắng điền các giá trị NaN vào một khung dữ liệu với các giá trị đến từ một phân bố chuẩn chuẩn. này hiện mã của tôi:Python Pandas Dataframe điền các giá trị NaN
sqlStatement = "select * from sn.clustering_normalized_dataset"
df = psql.frame_query(sqlStatement, cnx)
data=df.pivot("user","phrase","tfw")
dfrand = pd.DataFrame(data=np.random.randn(data.shape[0],data.shape[1]))
data[np.isnan(data)] = dfrand[np.isnan(data)]
Sau khi xoay vòng các dataframe 'dữ liệu' có vẻ như rằng:
phrase aaron abbas abdul abe able abroad abu abuse \
user
14233664 NaN NaN NaN NaN NaN NaN NaN NaN
52602716 NaN NaN NaN NaN NaN NaN NaN NaN
123456789 NaN NaN NaN NaN NaN NaN NaN NaN
500158258 NaN NaN NaN NaN NaN NaN NaN NaN
517187571 0.4 NaN NaN 0.142857 1 0.4 0.181818 NaN
Tuy nhiên, tôi cần điều đó mỗi giá trị NaN sẽ được thay thế bằng một giá trị ngẫu nhiên mới. Vì vậy, tôi tạo ra một df mới bao gồm chỉ các giá trị ngẫu nhiên (dfrand) và sau đó cố gắng để trao đổi các số bị mất (Nan) bởi các giá trị từ dfrand tương ứng với các chỉ số của NaN. Vâng - tiếc là nó không hoạt động - Mặc dù khái niệm
np.isnan(data)
trả về một dataframe bao gồm giá trị True và False, khái niệm
dfrand[np.isnan(data)]
trở lại chỉ có giá trị NaN để lừa tổng thể không công việc. Bất kỳ ý tưởng nào về vấn đề này?
nếu tôi cần quét TẤT CẢ các cột thì sao? những gì tôi vượt qua như là tham số cho báo cáo đầu tiên và thứ ba? – user4045430
chỉ cần lặp lại. 'for c trong data.columns: ...' – acushner
Tôi có hơn 3000 cột. Có thể có một cách nhanh hơn? – user4045430