Python 按操作分组
各位,我有意见:Python 按操作分组,python,pandas,Python,Pandas,各位,我有意见: 0 3 4 5 6 52 JJAA 4.50 4.50 4.50 4.50 92 JJAA 9.00 9.00 9.00 7.50 103 JJAA 1.50 1.50 1.50 1.50 150 JJAT 9 9 9 10.5 164 JJSP 7.50 7.50 7.50 7.50 34 JJSP 4.50 4.50 4.50 4.50 21
0 3 4 5 6
52 JJAA 4.50 4.50 4.50 4.50
92 JJAA 9.00 9.00 9.00 7.50
103 JJAA 1.50 1.50 1.50 1.50
150 JJAT 9 9 9 10.5
164 JJSP 7.50 7.50 7.50 7.50
34 JJSP 4.50 4.50 4.50 4.50
21 JJSP 7.50 7.50 7.50 7.50
135 JJSP 6.00 6.00 6.00 4.50
我想数一数第3、4、5和6列中有多少等号,对应于第0列的每种类型
预期产出:
0 3 4
0 JJAA 1.50 4
1 JJAA 4.50 4
3 JJAA 7.50 1
4 JJAA 9.00 3
5 JJAT 9.00 3
6 JJAT 10.5 1
7 JJSP 4.50 5
8 JJSP 6.00 3
9 JJSP 7.50 8
您可以熔化数据帧,然后按列0和值分组,以获得每个组的大小
df.melt(id_vars='0').groupby(['0','value']).size().reset_index(name='count')
输出
0 value count
0 JJAA 1.5 4
1 JJAA 4.5 4
2 JJAA 7.5 1
3 JJAA 9.0 3
4 JJAT 9.0 3
5 JJAT 10.5 1
6 JJSP 4.5 5
7 JJSP 6.0 3
8 JJSP 7.5 8
您可以堆叠列
3
-6
,然后按列分组0
,并获取分组方式中的项目计数,如下所示:
df.set_index('0').stack().groupby('0').value_counts(sort=False)
输出:
0
JJAA 1.5 4
4.5 4
7.5 1
9.0 3
JJAT 9.0 3
10.5 1
JJSP 4.5 5
6.0 3
7.5 8
dtype: int64