在Python中计算百分数熊猫数据框
问题描述:
我试图计算数据框中每个数字的百分位数,并将其添加到名为“百分位数”的新列中。在Python中计算百分数熊猫数据框
这是我的尝试:
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'])
列没有被填满,并导致“男”。这应该相当容易,但我不确定我要去哪里错。
在此先感谢您的帮助。
答
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
+0
非常简单的答案,谢谢@斯科特波士顿 – mattblack
+0
使用'.rank' - 应该显着更快 –
不需要通过在df'循环'对于i。看到这个答案https://stackoverflow.com/a/44607827/1870832 –
你应该知道在熊猫广播。看到这个[广播](https://stackoverflow.com/a/29955358/5496463)。 – danche