Python 数据帧:查找行中最近的较大值

Python 数据帧:查找行中最近的较大值,python,pandas,Python,Pandas,我需要从0到1生成5000个随机值,并为每个查找“sum”列中最近的较大值,然后将此行放入新的数据框中 我的旧数据帧: Probability sum 0.008773 0.008773 0.008715 0.017488 0.007244 0.024732 0.006997 0.031730 因此,它将是一个新的数据帧,与旧数据帧相比有5000行。您可以尝试以下方法: ## sample data sudo = pd.read_fwf(Str

我需要从0到1生成5000个随机值,并为每个查找“sum”列中最近的较大值,然后将此行放入新的数据框中

我的旧数据帧:

Probability  sum  
0.008773     0.008773  
0.008715     0.017488  
0.007244     0.024732  
0.006997     0.031730
因此,它将是一个新的数据帧,与旧数据帧相比有5000行。

您可以尝试以下方法:

## 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

您希望计算0到1之间随机生成的5000个值的累积和。这就是问题吗?你的问题很不清楚。您想要的输出是什么样子的?例如:第一个随机数0.01999999999,所以我需要选择值为0.024732的行。下一个4999生成的随机数也是一样,这就是我需要的。非常感谢你!