Python 计算每列和其他类别列中多列的值数

Python 计算每列和其他类别列中多列的值数,python,pandas,dataframe,group-by,pandas-groupby,Python,Pandas,Dataframe,Group By,Pandas Groupby,我有一个数据框,它包含多个列,其中0和1(a,B)以及一个列(C)表示行的类别。现在,我想计算每个列和类别的0和1值 import pandas as pd test_data = {'A': [0,0,1,1,1,0], 'B': [0,1,0,1,0,1], 'C': ['a','a','b','b', 'c', 'c']} df = pd.DataFrame(test_data) 我试图弄清楚如何使用pd.piovt_表重新排列数据

我有一个数据框,它包含多个列,其中0和1(a,B)以及一个列(C)表示行的类别。现在,我想计算每个列和类别的0和1值

import pandas as pd

test_data = {'A': [0,0,1,1,1,0],
             'B': [0,1,0,1,0,1],
             'C': ['a','a','b','b', 'c', 'c']}

df = pd.DataFrame(test_data)
我试图弄清楚如何使用pd.piovt_表重新排列数据帧,但是没有成功地获得正确的转换。我尝试了以下方法:

table = pd.pivot_table(df, columns = ['C'], index=['A'], aggfunc='count')
print('0', table)
这将产生以下输出:

0      B          
C    a    b    c
A               
0  2.0  NaN  1.0
1  NaN  2.0  1.0
0      B           |   A            # columns A and B
C    a a  b b  c c | a a  b b  c c  # row category based on C
     0 1  0 1  0 1 | 0 1  0 1  0 1  # 0 and 1 values of the columns A and B

     1 1  1 1  1 1 | 2 0  0 2  1 1  # counts

0      B     |   A      # columns A and B
C    a  b  c | a  b  c  # row category based on C
  0| 1  1  1 | 2  0  1
  1| 1  1  1 | 0  2  1
我的目标是获得以下输出:

0      B          
C    a    b    c
A               
0  2.0  NaN  1.0
1  NaN  2.0  1.0
0      B           |   A            # columns A and B
C    a a  b b  c c | a a  b b  c c  # row category based on C
     0 1  0 1  0 1 | 0 1  0 1  0 1  # 0 and 1 values of the columns A and B

     1 1  1 1  1 1 | 2 0  0 2  1 1  # counts

0      B     |   A      # columns A and B
C    a  b  c | a  b  c  # row category based on C
  0| 1  1  1 | 2  0  1
  1| 1  1  1 | 0  2  1
[编辑]或以下输出:

0      B          
C    a    b    c
A               
0  2.0  NaN  1.0
1  NaN  2.0  1.0
0      B           |   A            # columns A and B
C    a a  b b  c c | a a  b b  c c  # row category based on C
     0 1  0 1  0 1 | 0 1  0 1  0 1  # 0 and 1 values of the columns A and B

     1 1  1 1  1 1 | 2 0  0 2  1 1  # counts

0      B     |   A      # columns A and B
C    a  b  c | a  b  c  # row category based on C
  0| 1  1  1 | 2  0  1
  1| 1  1  1 | 0  2  1
有人能帮我吗?谢谢大家!

我想你需要事先

第一种情况是第二种情况,使用unstack()


第二种情况是使用stack()的第一种情况

输出

0  B        A      
C  a  b  c  a  b  c
0  1  1  1  2  0  1
1  1  1  1  0  2  1
我想你之前需要

第一种情况是第二种情况,使用unstack()


第二种情况是使用stack()的第一种情况

输出

0  B        A      
C  a  b  c  a  b  c
0  1  1  1  2  0  1
1  1  1  1  0  2  1

非常感谢你的两个答案!我一定会查看df.melt()。非常感谢您的两个答案!肯定会签出df.melt()。