Подтвердить что ты не робот

Как напечатать объект groupby

Я хочу напечатать результат группировки с помощью Pandas.

У меня есть dataframe:

import pandas as pd
df = pd.DataFrame({'A': ['one', 'one', 'two', 'three', 'three', 'one'], 'B': range(6)})
print df

       A  B
0    one  0
1    one  1
2    two  2
3  three  3
4  three  4
5    one  5

При печати после группировки "A" у меня есть следующее:

print df.groupby('A')

<pandas.core.groupby.DataFrameGroupBy object at 0x05416E90>

Как я могу напечатать группу данных?

Если я это сделаю:

print df.groupby('A').head()

Я получаю dataframe, как если бы он не был сгруппирован:

             A  B
A                
one   0    one  0
      1    one  1
two   2    two  2
three 3  three  3
      4  three  4
one   5    one  5

Я ожидал чего-то вроде:

             A  B
A                
one   0    one  0
      1    one  1
      5    one  5
two   2    two  2
three 3  three  3
      4  three  4
4b9b3361

Ответ 1

Просто выполните:

grouped_df = df.groupby('A')

for key, item in grouped_df:
    print grouped_df.get_group(key), "\n\n"

Это также работает,

grouped_df = df.groupby('A')    
gb = grouped_df.groups

for key, values in gb.iteritems():
    print df.ix[values], "\n\n"

Для выборочной группировки клавиш: Вставьте нужные ключи внутри key_list_from_gb, следуя ниже, используя gb.keys(): например,

gb = grouped_df.groups
gb.keys()

key_list_from_gb = [key1, key2, key3]

for key, values in gb.iteritems():
    if key in key_list_from_gb:
        print df.ix[values], "\n"

Ответ 2

Если вы просто ищете способ его отображения, вы можете использовать describe():

grp = df.groupby['colName']
grp.describe()

Это дает вам аккуратную таблицу.

Ответ 3

Кроме того, другая простая альтернатива может быть:

gb = df.groupby("A")
gb.count() # or,
gb.get_group(your_key)

Ответ 4

Я подтвердил, что поведение head() изменяется между версиями 0.12 и 0.13. Это похоже на ошибку. Я создал issue.

Но операция groupby фактически не возвращает DataFrame, отсортированную по группе. Метод .head() здесь немного вводит в заблуждение - это просто удобная функция, позволяющая вам пересмотреть объект (в данном случае df), который вы сгруппировали. Результатом groupby является отдельный объект, объект groupby. Вы должны apply, transform или filter вернуться в DataFrame или Series.

Если все, что вы хотели сделать, было сортировка по значениям в столбцах A, вы должны использовать df.sort('A').