ja powoli z R do pytona + pandy, a ja w obliczu problemu nie można rozwiązać ...pandy - dodać kolumnę z wartością na podstawie exisitng jednego (kosze, qcut)
Potrzebuję dyskretyzować wartości z jednej kolumny, przypisując je do pojemników i dodając kolumnę z tymi nazwami bin do oryginalnego DataFrame
. Próbuję użyć pandas.qcut
, ale wynikowy obiekt Categorical
wydaje się nie grać dobrze z DataFrame
.
Przykład:
import pandas as pd
df1 = pd.DataFrame(np.random.randn(10), columns=['a'])
df1['binned_a'] = pd.qcut(df1['a'],4)
Teraz gdy próbuje wywołać describe
na df1
nie widzę nową kolumnę:
>>> 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
jednak najwyraźniej jest tam:
>>> 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]
Co ja robię źle? Moim pożądanym wynikiem jest uzyskanie kolumny z 4 unikalnymi wartościami ciągów opisującymi pojemniki (jak czynniki w R).
EDIT:
Jak słusznie zauważony przez Dana metoda summary()
nie pokaże kolumnę z danymi tekstowymi tylko i tak tajemniczy problem jest rozwiązany :) Dzięki wielkie!
Niezupełnie, w rzeczywistości jestem po prostu zastanawiasz się, dlaczego nowy 'binned_a' kolumna nie jest wyświetlana w' wyniku describe' ... Jednak ja próbowałem zrobić 'df1 ['binned_a'] = pd.Series (pd.qcut (df1 ['a'], 4))' i nadal nie ma wyniku ... –
"Bins" w '' binned_a'' są ciągami , więc '' describe() '' ignoruje je. Czy dokładnie o pojemnikach chciałbyś opisać? –
Ahhh, istotnie ... Myślałem, że gdy kolumna nie jest wyświetlana w "opisz()", to coś jest nie tak (w kolumnie tekstu R są również wyświetlane w podsumowaniu) ... Teraz wydaje się jasne, dzięki dużo! –