2016-12-20 8 views

Odpowiedz

21

print jest twoim przyjacielem, gdy czegoś nie rozumiesz. Powoduje wiele wątpliwości.

Spójrz:

import pandas as pd 

df = pd.DataFrame(data={'books':['bk1','bk1','bk1','bk2','bk2','bk3'], 'price': [12,12,12,15,15,17]}) 
print df 
print 
print df.groupby('books', as_index=True).sum() 
print 
print df.groupby('books', as_index=False).sum() 

wyjściowa:

books price 
0 bk1  12 
1 bk1  12 
2 bk1  12 
3 bk2  15 
4 bk2  15 
5 bk3  17 

     price 
books  
bk1  36 
bk2  30 
bk3  17 

    books price 
0 bk1  36 
1 bk2  30 
2 bk3  17 

Kiedy as_index=True klawisz (s) można używać w GroupBy staną się indeks w nowym dataframe.

Zaleta as_index=True polega na tym, że można wyszarpnąć żądane wiersze za pomocą nazw kluczy. Na przykład jeśli chcesz 'bk1' można dostać to tak: df.loc['bk1'] w przeciwieństwie do tego, kiedy as_index=False następnie trzeba będzie dostać to tak: df.loc[df.books=='bk1']

tym drugim Główną zaletą zastosowania as_index=True podniesionego przez @ayhan w komentarzach: df.loc['bk1'] będzie być szybszym, ponieważ nie musi przechodzić przez całą kolumnę books, aby znaleźć 'bk1' podczas indeksowania. To po prostu wyliczy wartość mieszania 'bk1' i znajdzie ją za pierwszym razem.

+1

dziękuję. Nie wiem o druku. – Haritha

+0

@Haritha Jest to ogólna zasada w programowaniu. "wypisz" wszystko, co budzi wątpliwości. We wczesnych dniach programowania napisy "print" były wstawiane wszędzie w programie w celu debugowania errros. Jeśli uważasz, że odpowiedziałem na twoje pytanie, rozważ zaakceptowanie go jako odpowiedzi, klikając znak wyboru "✔" po lewej stronie odpowiedzi poniżej dwóch trójkątów. – MYGz

+0

@Haritha A także wybierz się na wycieczkę http://stackoverflow.com/tour – MYGz

3

Podczas korzystania z grupy według funkcji, as_index można ustawić na wartość true lub false, w zależności od tego, czy kolumna, w której ma się znaleźć indeks, jest kolumną wyjściową.

import pandas as pd 
table_r = pd.DataFrame({ 
    'colors': ['orange', 'red', 'orange', 'red'], 
    'price': [1000, 2000, 3000, 4000], 
    'quantity': [500, 3000, 3000, 4000], 
}) 
new_group = table_r.groupby('colors',as_index=True).count().sort('price', ascending=False) 
print new_group 

wyjściowa:

 price quantity 
colors     
orange  2   2 
red   2   2 

Teraz as_index = False

colors price quantity 
0 orange  2   2 
1  red  2   2 

Uwaga jak kolory nie jest indeksem gdy zmieniamy as_index = false