Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert a pandas groupby object to list of dataframes

Tags:

python

pandas

Say I have the following dataframe, and want to group-by the ys:

   xs  ys
0   0   0
1   1   0
2   2   1
3   3   1

I can do this by running

grouped = df.groupby('ys')

I can iterate through this new groupby object fine, but instead I want a list of the dataframes that are accessed by group in the following loop:

for name, group in grouped:
    do_something(group)

Is this possible?

like image 664
David Stansby Avatar asked Jan 16 '17 17:01

David Stansby


1 Answers

Sure, just iterate over the groups!

>>> import pandas as pd, numpy as np
>>> df = pd.DataFrame(dict(xs=list(range(4)), ys=[0,0,1,1]))
>>> df
   xs  ys
0   0   0
1   1   0
2   2   1
3   3   1
>>> grouped = df.groupby('ys')
>>> dataframes = [group for _, group in grouped]
>>> dataframes
[   xs  ys
0   0   0
1   1   0,    xs  ys
2   2   1
3   3   1]
>>>
like image 190
juanpa.arrivillaga Avatar answered Oct 11 '22 15:10

juanpa.arrivillaga