PERCENTRANK.INC в пандах - PullRequest
       4

PERCENTRANK.INC в пандах

0 голосов
/ 24 сентября 2018

Я хочу посчитать с пандами, что Excel дает в результате PERCENTRANK.INC

Ранг в имени функции довольно запутанный, так как на самом деле он просто вычисляет количество раз, которое значение уступает всемзначения столбца, разделенные на количество значений минус 1, см. рисунок

enter image description here

Следующий фрагмент правильно пересчитывает функцию 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)

1 Ответ

0 голосов
/ 08 октября 2018

ответ - применить применить с осью = 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...