Poniendo cada valor en su percentil en Pandas.

Considere una serie con los siguientes percentiles:

> df['col_1'].describe(percentiles=np.linspace(0, 1, 20)) count 13859.000000 mean 421.772842 std 14665.298998 min 1.201755 0% 1.201755 5.3% 1.430695 10.5% 1.438417 15.8% 1.466462 21.1% 1.473050 26.3% 1.500834 31.6% 1.512218 36.8% 1.542935 42.1% 1.579845 47.4% 1.647162 50% 1.690612 52.6% 1.749047 57.9% 1.955589 63.2% 2.344475 68.4% 3.075641 73.7% 4.466094 78.9% 8.410964 84.2% 14.998738 89.5% 41.363612 94.7% 162.865079 100% 1511013.790233 max 1511013.790233 Name: col_1, dtype: float64 

Me gustaría obtener otra columna col_2 con el percentil al que se asignó cada fila en el cálculo anterior.

¿Cómo puedo hacer eso en Pandas?

 df2 = pd.DataFrame(range(1000)) df2.columns = ['a1'] df2['percentile'] = pd.qcut(df2.a1,100, labels=False) 

O deja fuera las tags para ver la gama.


Tenga en cuenta que en Python 3, con Pandas 0.16.2 (última versión a partir de hoy), debe usar list(range(1000)) lugar de range(1000) para que funcione lo anterior.