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