我需要从0到1生成5000个随机值,并且每个找到最接近的值" sum"列并将此行放在我的新数据框中。
我的旧数据框:
Probability sum
0.008773 0.008773
0.008715 0.017488
0.007244 0.024732
0.006997 0.031730
所以这将是新的数据帧,包含旧行的5000行。
答案 0 :(得分:0)
你可以试试这个:
## sample data
sudo = pd.read_fwf(StringIO(u'''
Probability sumt
0.008773 0.008773
0.008715 0.017488
0.007244 0.024732
0.006997 0.031730
'''),header=1)
# get sum values
sl = sudo.sumt.values.tolist()
# create random sample of 5000 values between 0 and 1
np.random.seed(10)
df = pd.DataFrame({'randoms': list(np.random.random(5000))})
# get closest value
df['random_map'] = df['randoms'].apply(lambda x: min(sl, key= lambda y: abs(y - x)))
print(df.head(10))
randoms random_map
0 0.771321 0.031730
1 0.020752 0.017488
2 0.633648 0.031730
3 0.748804 0.031730
4 0.498507 0.031730
5 0.224797 0.031730
6 0.198063 0.031730
7 0.760531 0.031730
8 0.169111 0.031730
9 0.088340 0.031730