我有一个DataFrame top15
,其国家名称作为索引和几列。
我正在尝试添加一个由两个现有列计算得出的新列,但groupby对象(按大陆分组)未考虑该列。
这就是我正在做的:
top15['POPEST'] = top15['Energy Supply'] / top15['Energy Supply per Capita']
top15 = top15.assign(POPEST=[top15['Energy Supply'] / top15['Energy Supply per Capita']])
在对POPEST列进行分组(这是我唯一感兴趣的列)之后,在计算任何函数时不会出现:
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'}
grouped = top15.groupby(by=ContinentDict)
print(grouped.sum())
这会输出除POPEST列以外的所有基于该国家及其大陆的值的总和。
我在做什么错了?
编辑:top15是解析和合并不同的excel / csv文件的结果,这些列是:
['Rank', 'Documents', 'Citable documents', 'Citations', 'Self-citations', 'Citations per document', 'H index', 'Energy Supply', 'Energy Supply per Capita', '% Renewable', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015']
这些行是ContinentDict
键中列出的15个国家/地区。