Dataframe 用范围内的随机值替换 NaN

问题描述 投票:0回答:1

我有一个带有 NaN 的 Python 数据框,如下所示:

import pandas as pd
details = {
    'info1' : [10,None,None,None,None,None,15,None,None,None,5],
    'info2' : [15,None,None,None,10,None,None,None,None,None,20],
}
df = pd.DataFrame(details)
print(df)

如何用特定范围(基于有值的行)内的随机数(例如,uniform)替换 NaN,如下所示:

enter image description here

python pandas dataframe nan
1个回答
0
投票

IIUC,您可以用随机范围的数字替换 nan 值,如下所示:

details = {
    'info1' : [10,None,None,None,None,None,15,None,None,None,5],
    'info2' : [15,None,None,None,10,None,None,None,None,None,20],
}
df = pd.DataFrame(details)

df = df.map(lambda x: x if not np.isnan(x) else np.random.randint(10,15))

print(df)

结果:

   info1  info2
0    10.0   15.0
1    11.0   13.0
2    11.0   14.0
3    10.0   12.0
4    13.0   10.0
5    12.0   14.0
6    15.0   10.0
7    13.0   14.0
8    14.0   11.0
9    13.0   13.0
10    5.0   20.0
© www.soinside.com 2019 - 2024. All rights reserved.