2016-12-20 4 views

ответ

21

print Ваш друг, когда вы ничего не понимаете. Он много раз убирает сомнения.

Посмотрите:

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() 

Выход:

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 

Когда as_index=True ключ (ы) вы используете в GroupBy станет индекс в новом dataframe.

Преимущество as_index=True заключается в том, что вы можете вытаскивать нужные строки, используя имена ключей. Напр. если вы хотите 'bk1' вы можете получить его так: df.loc['bk1'] в противоположность тому, когда as_index=False то вы должны будете получить это следующим образом: df.loc[df.books=='bk1']

Включая другой Основное преимущество использования as_index=True поднятый @ayhan в комментариях: df.loc['bk1'] бы быстрее, потому что ему не нужно проходить весь столбец books, чтобы найти 'bk1', когда он проиндексирован. Он просто вычислит значение хэша 'bk1' и найдет его в 1 раз.

+1

Спасибо много. Я знаю о печати. – Haritha

+0

@Haritha Это общее правило в программировании. 'распечатайте все, что вызывает сомнения. В первые дни программирования команды 'print' были включены повсюду в программе для отладки ошибок. Если вы думаете, что я ответил на ваш вопрос, тогда подумайте о принятии его в качестве ответа, нажав на галочку «✔» слева от ответа под двумя треугольниками. – MYGz

+0

@Haritha А также совершите экскурсию http://stackoverflow.com/tour – MYGz

3

При использовании группы по функции as_index может быть установлено значение true или false в зависимости от того, хотите ли вы, чтобы столбец, с которым вы группировались, являлся индексом вывода.

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 

выход:

 price quantity 
colors     
orange  2   2 
red   2   2 

Теперь as_index = False

colors price quantity 
0 orange  2   2 
1  red  2   2 

Обратите внимание, как цвет больше не является индексом, когда мы изменяем as_index = False