假设存在如下数据集drinks:
以continent列进行分组:
drinks.groupby(by='continent')
返回值是个重构格式的DataFrameGroupBy object,没法直接输出
('AF', country beer_servings spirit_servings wine_servings \
2 Algeria 25 0 14
4 Angola 217 57 45
18 Benin 34 4 13
22 Botswana 173 35 35
26 Burkina Faso 25 7 7 ),
('EU', country beer_servings spirit_servings wine_servings \
1 Albania 89 132 54
3 Andorra 245 138 312
7 Armenia 21 179 11
9 Austria 279 75 191
10 Azerbaijan 21 46 5 )
可以使用方括号取出其中一列数据进行聚合,返回值SeriesGroupBy object
drinks.groupby(by='continent')['country']
('AF', 2 Algeria
4 Angola
18 Benin
22 Botswana
26 Burkina Faso),
('EU', 1 Albania
3 Andorra
7 Armenia
9 Austria
10 Azerbaijan),
这些结构是由多维数组构成,把SeriesGroupBy object转换成list列表后:
temp = drinks.groupby(by='continent')['country']
i = list(temp)
print(i)
看起来是这样的,list中每个元素由元组构成:
[('AF', 2 Algeria
4 Angola
18 Benin
22 Botswana
26 Burkina Faso),
('EU', 1 Albania
3 Andorra
7 Armenia
9 Austria
10 Azerbaijan)]
i[0]
('AF', 2 Algeria
4 Angola
18 Benin
22 Botswana
26 Burkina Faso)
i[0][0]
AF
i[0][1]
2 Algeria
4 Angola
18 Benin
22 Botswana
26 Burkina Faso
i[0][1][4]
Angola
注意这一步产生数组的索引由前面的索引值提供访问,例如不存在3这个索引值
如果你想访问第22号索引
只能写
i[0][1][22]
不能写
i[0][1][3]
i[0][1][3]在这个维度并不存在
所以分组函数只是改变数据的呈现方式,并没改变原数据的索引