使用字典对数据帧进行分组

2024-05-13 14:36:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个以国家名称作为行索引的数据框,还有一个以大陆/国家对作为行索引的字典,如下所示:

ContinentDict  = {'China':'Asia', 
              'United States':'North America', 
              'Japan':'Asia', 
              'United Kingdom':'Europe', 
              'Russian Federation':'Europe', 
              'Canada':'North America', 
              'Germany':'Europe', 
              'India':'Asia',
              'France':'Europe', 
              'South Korea':'Asia', 
              'Italy':'Europe', 
              'Spain':'Europe', 
              'Iran':'Asia',
              'Australia':'Australia', 
              'Brazil':'South America'}

我想使用groupby函数根据这些大陆对数据帧进行分组。我曾考虑将大陆合并为数据框架的附加列,但这似乎很笨拙。在这种情况下,最佳做法是什么

谢谢

PS:对于Python中字典的使用以及如何与数据帧一致地使用它们,我通常有点困惑

编辑:我最初的国家数据框架中有一些关于人口统计的列。按大陆分组后,我的工作流程的下一步是计算每个大陆的平均值、标准偏差等


Tags: 数据名称框架字典国家unitedsouth大陆
2条回答

可以执行以下操作并按grouped.groups显示组,这将为您提供组及其索引。但是,将序列传递给groupby的唯一缩减是序列将具有与数据帧相同的长度

df=pd.DataFrame(ContinentDict.items())#dict to dataframe
df.columns=['Country','Continent']#dataframe columns
df.groupby('Continent').groups#groupby and get groups
df = pd.DataFrame(ContinentDict, index=range(len(ContinentDict))).drop_duplicates().T
df['country'] = df.index
df.rename(columns={0: 'continent'}, inplace=True)
df_gb = df.groupby('continent', as_index=False, sort=False).agg(','.join)

print(df_gb)

continent   country
0   Asia    China,Japan,India,South Korea,Iran
1   North America   United States,Canada
2   Europe  United Kingdom,Russian Federation,Germany,Fran...
3   Australia   Australia
4   South America   Brazil

相关问题 更多 >