用随机数填充多个 Nan 值,而不仅仅是一个数字
Fill multiple Nan values with random numbers and not just one single number
我有一个包含多个 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
我有一个包含多个 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