我有一个包含多个 NaN
值的数据框。我想用 0,1 之间的随机数填充每个值
。我尝试了 fillna
但这只用一个值填充代码。
我们可以使用itterows
,但它会消耗大量资源。我们还有什么其他方法可以做到这一点吗?如果是,那么如何做?以下是我的数据框的示例。
> df
a b c d
0 1 10 na na
1 2 20 40 30
2 24 na na na
预期输出
> df
a b c d
0 1 10 0.7 0.9
1 2 20 40 30
2 24 0.9 0.34 0.532
基本上替换 na
之间的任何内容 (0,1)
最佳答案
您可以创建自己的公式和随机数:
在下面的解决方案中,我将列 a
与随机数相乘,并只取分数,因为您想要 0 到 1 之间的数字。
import pandas as pd
import numpy as np
import random
df = pd.DataFrame({'a':[1,2,24], 'b':[10,20, np.nan],'c':[np.nan,40,np.nan],'d':[np.nan,30,np.nan]})
for c in df.columns:
df[c] = np.where(df[c].isnull(),(df['a']*random.random())%1,df[c])
print(df)
输出:
a b c d
0 1.0 10.000000 0.526793 0.678061
1 2.0 20.000000 40.000000 30.000000
2 24.0 0.865441 0.643032 0.273461
关于python - 用随机数填充多个 Nan 值,而不仅仅是一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55630808/