当前位置: 代码迷 >> python >> Pandas 中的 PERCENTRANK.INC
  详细解决方案

Pandas 中的 PERCENTRANK.INC

热度:130   发布时间:2023-06-27 21:32:02.0

我想用 Pandas 计算 Excel 作为 PERCENTRANK.INC 的结果

函数名称中的排名相当混乱,因为实际上它只是计算一个值低于列的所有值的次数,除以值的计数减 1,见图

以下代码段正确地重新计算了 Excel 函数,尽管我发现它很慢,所以我想知道是否有更快的方法来做到这一点:

import pandas as pd

df = pd.DataFrame({'col': {0: 13, 1: 12, 2: 8, 3: 4, 4: 4, 5: 2, 6: 1, 7: 1, 8: 1}})

print(df)

def func2(t, comp):
    return (df[comp] < t).sum()

df['col1'] = df['col'].apply(func2, comp='col') / (df['col'].count()-1)

print(df)

答案是将 apply 与 axis=1 一起使用,下面的速度更快,并且完美地模仿了 excel 功能

df2 = df[testcol].apply(pd.to_numeric, errors='coerce').dropna().to_frame()
df[newcol] = df2.apply(lambda x: (sum(x[testcol] > df2[testcol]) / (df2.count() - 1)).round(3), axis=1)
  相关解决方案