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 ```