Sto lentamente muovendo da R a pitone + panda, e sto di fronte a un problema che non riesco a risolvere ...panda - aggiungere una colonna con valore basato su una exisitng (bidoni, qCut)
Ho bisogno di discretizzare i valori da una colonna, assegnandoli ai raccoglitori e aggiungendo una colonna con quei nomi dei cassetti all'originale DataFrame
. Sto cercando di utilizzare pandas.qcut
, ma l'oggetto Categorical
risultante sembra non giocare bene con DataFrame
.
Un esempio:
import pandas as pd
df1 = pd.DataFrame(np.random.randn(10), columns=['a'])
df1['binned_a'] = pd.qcut(df1['a'],4)
Ora, quando provo a invocare describe
su df1
non riesco a vedere la nuova colonna:
>>> df1.describe()
a
count 10.000000
mean 0.594072
std 1.109981
min -0.807307
25% -0.304550
50% 0.545839
75% 1.189487
max 2.851922
Tuttavia, a quanto pare c'è:
>>> df1
a binned_a
0 0.190015 (-0.305, 0.546]
1 0.140227 (-0.305, 0.546]
2 1.380000 (1.189, 2.852]
3 -0.522530 [-0.807, -0.305]
4 -0.452810 [-0.807, -0.305]
5 2.851922 (1.189, 2.852]
6 -0.807307 [-0.807, -0.305]
7 0.901663 (0.546, 1.189]
8 1.010334 (0.546, 1.189]
9 1.249205 (1.189, 2.852]
Che cosa sto facendo di sbagliato? Il mio risultato desiderato è ottenere una colonna con 4 valori di stringa univoci che descrivono i bin (come i fattori in R).
EDIT:
Come giustamente notato da Dan, il metodo summary()
non mostrerà colonna con i dati di solo testo e quindi il problema è risolto misterioso :) Grazie mille!
Non proprio, anzi mi chiedo solo perché il nuovo 'colonna di binned_a' non è visualizzato nel risultato' describe' ... Tuttavia, ho provato a fare 'df1 ['binned_a'] = pd.Series (pd.qcut (df1 ['a'], 4))' e ancora nessun risultato ... –
I "bin" in "binned_a'' sono stringhe , quindi '' describe() '' li sta ignorando. Vuoi esattamente dei bidoni che vorresti descrivere? –
Ahhh, infatti ... ho pensato che quando una colonna non viene mostrata in 'describe()' allora qualcosa non va (in R le colonne di testo sono anche mostrate in summery) ... Quindi sembra essere chiaro ora, grazie Un sacco! –