我正在使用pandas进行一些数据处理,我的熊猫语句看起来像这样
yearage.groupby(['year', 'Tm']).size()
它给我这样的数据
2014 ATL 9
BOS 9
BRK 7
CHI 10
CHO 9
CLE 8
DAL 9
DEN 8
DET 9
GSW 8
当我将其转换为数据帧时,我只得到两列复合键和计数。我真正想要的是,三列,
year, Tm, Size
如何在groupby
之后分离出两个复合键?
答案 0 :(得分:3)
您在groupby语句中指定as_index=False
。作为旁注,您可能希望使用count(不包括NaN)而不是大小。
>>> df.groupby(['year', 'Tm'], as_index=False).count()
year Tm a
0 2014 ATL 4
1 2014 BOS 4
2 2014 BRK 1
3 2014 CHI 1
4 2014 CHO 1
5 2014 CLE 1
6 2014 DAL 1
7 2014 DEN 1
8 2014 DET 1
9 2014 GSW 1
尺寸:
另一个简单的聚合示例是计算每个组的大小。这包含在GroupBy中作为size方法。它返回一个Series,其索引是组名,其值是每个组的大小。
对于计数:
计算组的计数,不包括缺失值
答案 1 :(得分:2)
我认为您可以使用参数name
为新列名Size
试用reset_index
:
yearage.groupby(['year','Tm']).size().reset_index(name='Size')
样品:
print yearage
year Tm a
0 2014 ATL 9
1 2014 ATL 9
2 2014 ATL 9
3 2014 ATL 9
4 2014 BOS 9
5 2014 BRK 7
6 2014 BOS 9
7 2014 BOS 9
8 2014 BOS 9
9 2014 CHI 10
10 2014 CHO 9
11 2014 CLE 8
12 2014 DAL 9
13 2014 DEN 8
14 2014 DET 9
15 2014 GSW 8
print yearage.groupby(['year','Tm']).size().reset_index(name='Size')
year Tm Size
0 2014 ATL 4
1 2014 BOS 4
2 2014 BRK 1
3 2014 CHI 1
4 2014 CHO 1
5 2014 CLE 1
6 2014 DAL 1
7 2014 DEN 1
8 2014 DET 1
9 2014 GSW 1
如果没有参数name
,请获取新列0
:
print yearage.groupby(['year','Tm']).size().reset_index()
year Tm 0
0 2014 ATL 4
1 2014 BOS 4
2 2014 BRK 1
3 2014 CHI 1
4 2014 CHO 1
5 2014 CLE 1
6 2014 DAL 1
7 2014 DEN 1
8 2014 DET 1
9 2014 GSW 1