How to print a groupby object

pandas, python

Solution

Simply do:

grouped_df = df.groupby('A')

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

Deprecation Notice: `ix` was deprecated in 0.20.0

This also works,

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

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

For selective key grouping: Insert the keys you want inside the `key_list_from_gb`, in following, using `gb.keys()`: For Example,

gb = grouped_df.groups
gb.keys()

key_list_from_gb = [key1, key2, key3]

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

Problem

I want to print the result of grouping with Pandas. I have a 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 ``` When printing after grouping by 'A' I have the following: ``` print(df.groupby('A')) <pandas.core.groupby.DataFrameGroupBy object at 0x05416E90> ``` How can I print the dataframe grouped? If I do: ``` print(df.groupby('A').head()) ``` I obtain the dataframe as if it was not grouped: ``` 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 ``` I was expecting something like: ``` A B A one 0 one 0 1 one 1 5 one 5 two 2 two 2 three 3 three 3 4 three 4 ```

Original source