简体   繁体   中英

make new dataframes from grouped dataframe automatically

I have this dataframe grouped


df1 = pd.DataFrame( { 
    "Name" : ["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"] , 
    "City" : ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"] } )



group = df1.groupby('City')

for city, city_df in group:
    print(city)

    print(city_df)

how can I get this output into new dataframes without specifying the new dfs? like if a got 4 groups out next time, i want to get 4 dfs automatically

Portland
      Name      City
2  Mallory  Portland
5  Mallory  Portland
Seattle
      Name     City
0    Alice  Seattle
1      Bob  Seattle
3  Mallory  Seattle
4      Bob  Seattle

You could create a dictionary from the groupby object with:

d = dict(tuple(df1.groupby('City')))

print(d['Portland'])

    Name      City
2  Mallory  Portland
5  Mallory  Portland

You can use the magic method __iter__() to get a groupby iterator and convert it into a dictionary with dict() :

dct = dict(df.groupby('City').__iter__())

If you want to get separate dataframes from the dictionary you can use the method values() :

df1, df2 = dct.values()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM