1
我試圖創建一個函數來計算數據框中多個變量的不同百分位數。我結合使用的字典用如下一個熊貓聚合函數:Percentiles加上Pandas groupby/aggregate
dfG = df.groupby('ClinicalEpisode')
dfA = dfG.agg({ 'Total LOS' :
{'Total LOS P5' : 'pd.quantile(.05)',
'Total LOS P10' : 'pd.quantile(.10)',
'Total LOS P15' : 'pd.quantile(.15)',
'Total LOS P20' : 'pd.quantile(.20)',
'Total LOS P25' : 'pd.quantile(.25)',
'Total LOS P30' : 'pd.quantile(.30)',
'Total LOS P33' : 'pd.quantile(.333333)',
'Total LOS P35' : 'pd.quantile(.35)',
'Total LOS P40' : 'pd.quantile(.40)',
'Total LOS P50' : 'pd.quantile(.50)',
'Total LOS P75' : 'pd.quantile(.75)',
'Total LOS P80' : 'pd.quantile(.80)',
'Total LOS P90' : 'pd.quantile(.90)'},
'Trigger SNF LOS' :
{'Trigger SNF LOS P5' : 'pd.quantile(.05)',
'Trigger SNF LOS P10' : 'pd.quantile(.10)',
'Trigger SNF LOS P15' : 'pd.quantile(.15)',
'Trigger SNF LOS P20' : 'pd.quantile(.20)',
'Trigger SNF LOS P25' : 'pd.quantile(.25)',
'Trigger SNF LOS P30' : 'pd.quantile(.30)',
'Trigger SNF LOS P33' : 'pd.quantile(.333333)',
'Trigger SNF LOS P35' : 'pd.quantile(.35)',
'Trigger SNF LOS P40' : 'pd.quantile(.40)',
'Trigger SNF LOS P50' : 'pd.quantile(.50)',
'Trigger SNF LOS P75' : 'pd.quantile(.75)',
'Trigger SNF LOS P80' : pd.quantile(.80),
'Trigger SNF LOS P90' : pd.quantile(.90)}
})
我已經嘗試了許多不同的功能,但似乎沒有任何與字典工作。
FWIW,我能夠計算這些位數一個變量一次處理這樣的代碼:
dfA = df.groupby('ClinicalEpisode')['Total LOS'].quantile(
[.05, .1, .15, .2, .25, .3, .3333, .35, .4, .5, .6, .7, .75, .8, .9, .95])
不過,我真的希望能夠使用字典的方法。我只是卡住了。
Numpy現在支持[nanpercentile](https://docs.scipy.org/doc/numpy/reference/generated/numpy.nanpercentile.html),它跳過了'dropna'步驟。 – 2017-09-21 17:51:08