我正在尝试使用来自标准正态分布的值填充数据框中的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)]
对于数据框"data"进行透视后,它看起来像这样:
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
然而,我需要将每个NaN值替换为一个新的随机值。因此,我创建了一个仅包含随机值(dfrand)的新df,并尝试通过与NaN索引对应的dfrand值来交换缺失的数字(Nan)。遗憾的是,它不起作用 - 尽管表达式
np.isnan(data)
返回一个由True和False值组成的数据框,该表达式
dfrand[np.isnan(data)]
返回仅为NaN值,以使整个技巧无效。有什么问题吗?