如何重塑Python数据框架以适应';PowerBI';维恩图?

如何重塑Python数据框架以适应';PowerBI';维恩图?,python,pandas,dataframe,Python,Pandas,Dataframe,在这里,我的目标是重塑panda的数据帧,并将新的数据帧加载到PowerBI中,并使用PowerBI Veen图 维恩图需要一种特定的格式,而且要通过pandas获得这种格式并不难。我可以通过“npwhere”函数获得所需的数据集,但似乎非常密集,而且代码很多 是否有其他方法可以实现我的期望输出 我的数据集: import pandas as pd df1 = pd.DataFrame({'Name': ['A0', 'A1', 'A2', 'A3','A4','A5'],

在这里,我的目标是重塑panda的数据帧,并将新的数据帧加载到PowerBI中,并使用PowerBI Veen图

维恩图需要一种特定的格式,而且要通过pandas获得这种格式并不难。我可以通过“npwhere”函数获得所需的数据集,但似乎非常密集,而且代码很多

是否有其他方法可以实现我的期望输出

我的数据集:

import pandas as pd

df1 = pd.DataFrame({'Name': ['A0', 'A1', 'A2', 'A3','A4','A5'],
                'Social': ['0', '0', '2', '3','2', '3'],
                  'Math': ['0', '1', '2', '3','2', '3'],
                   'Science': ['0', '0', '4', '3','2', '3'],
                   'Computers':['0', '0', '0', '0','2', '3']})

df1
我想要的数据集如下所示:

df2 = pd.DataFrame({'Number_of_Students': ['1', '1', '2', '2'],
                'Social': ['NO', 'NO', 'Yes', 'Yes'],
                  'Math': ['NO', 'Yes', 'Yes', 'Yes'],
                   'Science': ['NO', 'NO', 'Yes', 'Yes'],
                   'Computers':['NO', 'NO', 'NO', 'Yes']})

df2
对产出的解释: 在最终结果中,出现次数或名称汇总为数字 在这个例子中

  • 社会、数学、科学、计算机“0”=1名学生
  • 社会=0,数学大于0,科学大于0,计算机大于0 =1名学生
  • 社会、数学、科学超过0,计算机0=2名学生

  • 社会、数学、科学和计算机超过0=2名学生

    • 你可以用

      df1.loc[:,'Social':]=df1.loc[:,'Social':].ne('0').replace({False:'NO',True:'Yes'})
      
      df=df1.groupby(df1.columns[1:].tolist()).Name.count().reset_index()
      df
        Social Math Science Computers  Name
      0     NO   NO      NO        NO     1
      1     NO  Yes      NO        NO     1
      2    Yes  Yes     Yes        NO     2
      3    Yes  Yes     Yes       Yes     2