copy_df = df.copy()
copy_df = copy_df.groupby(['STNAME'])
states_pop = pd.DataFrame(columns=['pop'])
for i, c in copy_df:
states_pop.loc[i] = [**c.sort_value**s(by='CENSUS2010POP', ascending=False)[1:4]['CENSUS2010POP'].sum()]
这很好,但是我的疑问是-不应该是i.sort_values而不是c.sort_values。我的每一项都是一个系列,而不是一个数据框,对吧?
答案 0 :(得分:1)
.groupBy(...)[...]返回:GroupBy对象
该对象可以充当字典,其中键是对象被分组的列的可能值,而值是具有相应分组数据的新数据框。
因此,可以按以下方式迭代分组依据的结果:
for name, group in groupedDataFrame:
(...)
# group is a new dataFrame
因此,是为了分组(在您的情况下为c)而不是为字符串(在您的情况下为i)命名,您必须对其应用dataframe
操作。
您可以通过以下操作进行检查:
print(type(name), type(group))
我建议您检查以下link