加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python pandas总结名义变量(计数)

发布时间:2020-12-20 11:54:31 所属栏目:Python 来源:网络整理
导读:我有以下数据框: KEY PROD PARAMETER Y/N1 AAA PARAM1 Y1 AAA PARAM2 N1 AAA PARAM3 N2 AAA PARAM1 N2 AAA PARAM2 Y2 AAA PARAM3 Y3 CCC PARAM1 Y3 CCC PARAM2 Y3 CCC PARAM3 Y 我有兴趣通过PROD和PARAMETER列汇总Y / N列值并获得以下输出: PROD PARAM Y N
我有以下数据框:

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()

Image

在这种情况下使用的最简单操作是crosstab,它将产生Y / N列中存在的值的频率计数:

pd.crosstab([df['PROD'],df['PARAMETER']],df['Y/N'])

Image

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读