【问题标题】:Calculating Percentile in Python Pandas Dataframe [duplicate]在 Python Pandas Dataframe 中计算百分位数 [重复]
【发布时间】:2017-11-20 12:51:18
【问题描述】:

我正在尝试计算数据框中每个数字的百分位数,并将其添加到一个名为“百分位数”的新列中。

这是我的尝试:

import pandas as pd
from scipy import stats

data = {'symbol':'FB','date':['2012-05-18','2012-05-21','2012-05-22','2012-05-23'],'close':[38.23,34.03,31.00,32.00]}

df = pd.DataFrame(data)

close = df['close']

for i in df:
    df['percentile'] = stats.percentileofscore(close,df['close'])

该列未填充,结果为“NaN”。这应该很容易,但我不确定我哪里出错了。

提前感谢您的帮助。

【问题讨论】:

标签: python pandas percentile


【解决方案1】:
df.close.apply(lambda x: stats.percentileofscore(df.close.sort_values(),x))

df.close.rank(pct=True)

输出:

0    1.00
1    0.75
2    0.25
3    0.50
Name: close, dtype: float64

【讨论】:

  • 非常简单的答案,谢谢@scott-boston
  • 使用.rank -- 应该会更快
  • .rank 是您应该使用的 100%。正确的 lambda 函数会慢得多
猜你喜欢
  • 2017-05-17
  • 2018-11-22
  • 2020-12-25
  • 1970-01-01
  • 2020-10-07
  • 2011-04-13
  • 2016-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多