计算dataframe中列中值的百分比

2024-10-03 02:38:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧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中的位置(即从df1中的df2中找到每个值的分位数),并将其添加到df2中的新列中(即每个值的分位数)

因此,预期输出(分位数值只是为了模仿这个想法,因为我不知道如何计算它们):

df2

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

有什么可以帮忙的吗


Tags: 数据数值df1df2ke位数val1oem
1条回答
网友
1楼 · 发布于 2024-10-03 02:38:15

好的,我假设您想知道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']的所有值都位于来自df1['val2']的第一个值和第二个值(共3个)之间

相关问题 更多 >