我有以下数据框:
KEY PROD ParaMETER Y/N
1 AAA ParaM1 Y
1 AAA ParaM2 N
1 AAA ParaM3 N
2 AAA ParaM1 N
2 AAA ParaM2 Y
2 AAA ParaM3 Y
3 CCC ParaM1 Y
3 CCC ParaM2 Y
3 CCC ParaM3 Y
我有兴趣通过PROD和ParaMETER列汇总Y / N列值并获得以下输出:
PROD ParaM Y N
AAA ParaM1 1 1
AAA ParaM2 1 1
AAA ParaM3 1 1
CCC ParaM1 1 0
CCC ParaM2 1 0
CCC ParaM3 1 0
而Y和N值是来自原始数据帧的Y / N列值的计数.
解决方法:
您可以通过创建值为1的附加列来使用pivot_table
,因为它们无关紧要(您只计算它们)
df['Y/Ncount'] = 1
df = df.pivot_table(index=['PROD', 'ParaMETER'], columns=['Y/N'], values=['Y/Ncount'],
aggfunc=sum, fill_value=0)
df.columns = [col for col in df.columns.get_level_values(1)]
df.reset_index()
在这种情况下使用的最简单操作是crosstab
,它将产生Y / N列中存在的值的频率计数:
pd.crosstab([df['PROD'], df['ParaMETER']], df['Y/N'])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。