Хорошо, поэтому я предполагаю, что вы хотите знать для каждого значения из df2['val2']
, каким будет соответствующий процентиль в отсортированных значениях из df1['val2']
.
Сначала вы должны построить отсортированный ряд. чтобы иметь возможность позже использовать searchsorted
:
dfs = df1['val2'].sort_values().reset_index(drop=True)
Как только это будет сделано, найти процентиль легко:
df2['quantile'] = dfs.searchsorted(df2['val2']) * 100.0 / len(dfs)
С вашими данными выборки это дает:
val1 val2 quantile
0 jdj 184.8 33.333333
1 oem 33.0 33.333333
2 kiwe 99.4 33.333333
3 frqp 82.0 33.333333
, поскольку все значения из df2['val2']
находятся между первым и вторым значением (из 3) из df1['val2']