Рассчитать процентиль значения в столбце в кадре данных - PullRequest
0 голосов
/ 03 марта 2020

У меня есть фрейм данных df1 с двумя столбцами:

val1    val2
Fwd     729
jeoq    28.2
ke      225.24

И еще один фрейм данных df2 с:

val1    val2
jdj     184.8
oem     33
kiwe    99.4
frqp    82

Я хочу для каждого значения в df2, найдите, где оно находится в df1 (то есть найдите квантиль каждого значения из df2 в df1) и добавьте его в новый столбец в df2 (т.е. квантиль для каждого значения)

Итак, ожидаемый результат (значение квантиля просто для mimi c идея, потому что я не уверен, как их вычислить):

df2

val1    val2   quantile
jdj     184.8  25.3
oem     33      67.2
kiwe    99.4    55.2
frqp    82      51.5

Любая помощь с этим, пожалуйста?

1 Ответ

0 голосов
/ 03 марта 2020

Хорошо, поэтому я предполагаю, что вы хотите знать для каждого значения из 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']

...