列中的随机数

时间:2019-01-23 21:42:01

标签: python pandas

目标是用从同一列中选择的随机数填充一列中的nan值。

我可以一次完成这一列,但是当遍历数据帧中的所有列时,我会遇到各种各样的错误。当我使用“ random.choice”时,我得到的是字母而不是列值。

 df1 = df_na
 df2 = df_nan.dropna()

 for i in range(5):
    for j in range(len(df1)):
        if np.isnan(df1.iloc[j,i]):
           df1.iloc[j,i] = np.random.choice(df2.columns[i])

 df1

关于前进的任何建议?

2 个答案:

答案 0 :(得分:1)

您可以这样做:

# sample data
df =pd.DataFrame({'a':[1,2,None,18,20,None],
                  'b': [22,33,44,None,100,32]})

# fill missing with a random value from that column
for col in df.columns:
    df[col].fillna(df[col].dropna().sample().values[0], inplace=True)

      a      b
0   1.0     22.0
1   2.0     33.0
2   20.0    44.0
3   18.0    100.0
4   20.0    100.0
5   20.0    32.0

答案 1 :(得分:1)

您可以将pd.DataFrame.applynp.random.choice结合使用:

df = df.apply(lambda s: s.fillna(np.random.choice(s.dropna())))