如何重塑Python数据框架以适应';PowerBI';维恩图?
在这里,我的目标是重塑panda的数据帧,并将新的数据帧加载到PowerBI中,并使用PowerBI Veen图 维恩图需要一种特定的格式,而且要通过pandas获得这种格式并不难。我可以通过“npwhere”函数获得所需的数据集,但似乎非常密集,而且代码很多 是否有其他方法可以实现我的期望输出 我的数据集:如何重塑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'],
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