ich langsam von bewegt bin R zu Python + Pandas, und ich habe ein Problem mit Blick auf mich nicht lösen kann ...Pandas - eine Spalte mit dem Wert basierend auf exisitng einem (bins, qcut) in
Ich muss Werte aus einer Spalte diskretisieren, indem Sie sie den Behältern zuweisen und eine Spalte mit diesen Behälternamen zu Original DataFrame
hinzufügen. Ich versuche, pandas.qcut
zu verwenden, aber das resultierende Categorical
Objekt scheint nicht gut mit DataFrame
zu spielen.
Ein Beispiel:
import pandas as pd
df1 = pd.DataFrame(np.random.randn(10), columns=['a'])
df1['binned_a'] = pd.qcut(df1['a'],4)
Nun, wenn ich versucht, aufzurufen describe
auf df1
kann die neue Spalte nicht sehen:
>>> 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
Allerdings ist es anscheinend gibt:
>>> 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]
Was mache ich falsch? Mein gewünschtes Ergebnis ist eine Spalte mit 4 eindeutigen String-Werten, die die Bins beschreiben (wie Faktoren in R).
EDIT:
Wie richtig von Dan entdeckt, die summary()
Methode nicht Spalt mit Nur-Text-Daten zeigen, und so ist das mysteriöse Problem gelöst :) Vielen Dank!
nicht genau, ich in der Tat frage mich nur, warum die neue 'binned_a' Spalte nicht in dem' describe' Ergebnis zeigt ... Aber ich habe versucht, 'df1 ['binned_a'] = pd.Series (pd.qcut (df1 ['a'], 4))' und immer noch kein Ergebnis ... –
Die "Bins" in '' binned_a'' sind Strings , so beschreibe() '' ignoriert sie. Würde genau über die Mülleimer du gerne beschreiben? –
Ahhh, in der Tat ... Ich dachte, wenn eine Spalte nicht in 'describe()' angezeigt wird, dann stimmt etwas nicht (in R text Spalten werden auch in summy angezeigt) ... So scheint es jetzt klar zu sein, danke viel! –