Python 如何根据条件筛选、汇总和重塑数据帧
我有以下数据帧Python 如何根据条件筛选、汇总和重塑数据帧,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有以下数据帧 df=pd.DataFrame({'column1_T1':[1,0,0,1,1],'column1_issues': ['Comment1','abc','pqr','Comment2','Comment1'],'column2_T2':[0,0,1,0,1],'column2_issues':['OK','abc','Comment3','efg','Comment3']}) 它将如下所示 df 带有后缀T1、T2等的列包含1或0 带有后缀“issues”的列包
df=pd.DataFrame({'column1_T1':[1,0,0,1,1],'column1_issues': ['Comment1','abc','pqr','Comment2','Comment1'],'column2_T2':[0,0,1,0,1],'column2_issues':['OK','abc','Comment3','efg','Comment3']})
它将如下所示
df
带有后缀T1、T2等的列包含1或0
带有后缀“issues”的列包含有关相应问题的注释。
我只需要考虑列中的1s和后缀T1/T2等,以及相应的问题在列1问题、列2问题等。
现在,我想分别计算第1列、第2列和第1列、第2列中与第1列、第2列中的1相对应的1的数量,以及第1列、第2列中的唯一注释,并按以下格式获取
column_labels count issue1 issue2
column1_issues 3 comment1 commen2
column2_issues 2 comment3
column_labels count issue1 issue2
column1_issues 3 comment1 commen2
column2_issues 2 comment3
我试过groupby和crosstab,但没能得到
df3=df.groupby(['column1_T1', 'column1_issues'])['column1_T1'].count().unstack().fillna(0)
df3['Total'] =df3.loc[[1]].sum(axis=1)
但这远远不是我想要的。我真的被困在这里了
我希望我的最终数据帧采用上面提到的以下格式
按以下格式
column_labels count issue1 issue2
column1_issues 3 comment1 commen2
column2_issues 2 comment3
column_labels count issue1 issue2
column1_issues 3 comment1 commen2
column2_issues 2 comment3
第一个过滤器针对
1
值为每组筛选第一列,针对2列数据帧获取第二列:
df1 = pd.concat([x.iloc[x.iloc[:, 0].values == 1,1].to_frame('issues').assign(lab=x.columns[1])
for i, x in df.groupby(lambda x: x.split('_')[0], axis=1)], ignore_index=True)
print (df1)
issues lab
0 Comment1 column1_issues
1 Comment2 column1_issues
2 Comment1 column1_issues
3 Comment3 column2_issues
4 Comment3 column2_issues
然后删除重复项、添加辅助列依据和重塑依据、最后一次使用计数列依据: