我有一个包含多个NaN
值的数据框。我想用随机数填充每个between 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