2017-06-18 126 views
4

我試圖計算數據框中每個數字的百分位數,並將其添加到名爲「百分位數」的新列中。在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']) 

列沒有被填滿,並導致「男」。這應該相當容易,但我不確定我要去哪裏錯。

在此先感謝您的幫助。

+0

不需要通過在df'循環'對於i。看到這個答案https://stackoverflow.com/a/44607827/1870832 –

+0

你應該知道在熊貓廣播。看到這個[廣播](https://stackoverflow.com/a/29955358/5496463)。 – danche

回答

4
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' - 應該顯着更快 –

相關問題