逆向透视表 python_在Python中格式化透视表

本文介绍了如何使用Python的pandas库进行数据透视并按频率排序。作者展示了一段代码,该代码首先创建了一个DataFrame,然后通过pivot_table函数进行透视,接着对结果进行填充、求和与排序,最后输出了排序后的透视表。目前的问题是结果并未完全符合作者的需求,他们寻求帮助以获取每个X值下Y和Z的最高频率组合。
摘要由CSDN通过智能技术生成

我正在尝试根据不同列中的计数重新格式化表。在df = pd.DataFrame({'Number': [1, 2, 3, 4, 5], 'X' : ['X1', 'X2', 'X3', 'X3', 'X3'], 'Y' : ['Y2','Y1','Y1','Y1', 'Y2'], 'Z' : ['Z3','Z1','Z1','Z2','Z1']})

Number X Y Z

0 1 X1 Y2 Z3

1 2 X2 Y1 Z1

2 3 X3 Y1 Z1

3 4 X3 Y1 Z2

4 5 X3 Y2 Z1

我希望最上面的一行按频率X排序(首先是X3,因为它出现了两次),然后对于每个X值,计算其Y和Z值的频率,然后打印显示最多的一个。在

^{pr2}$

到目前为止,我有可以排序的代码import pandas as pd

df = pd.DataFrame({'Number': [1, 2, 3, 4, 5], 'X' : ['X1', 'X2', 'X3', 'X3', 'X3'], 'Y' : ['Y2','Y1','Y1','Y1', 'Y2'], 'Z' : ['Z3','Z1','Z1','Z2','Z1']})

pivot = df.pivot_table(index='X', columns=['Y', 'Z'], values = 'Number', aggfunc='count')

# clean the table from NaNs (not necessary, but more beautiful):

pivot.fillna(0, inplace=True)

pivot['sum'] = pivot.sum(axis=1)

pivot.sort('sum', ascending=False, inplace=True)

df = pivot[:5].transpose()

df.to_csv('sorted.csv')

和输出:Y Z X3 X1 X2

Y1 Z1 1 0 1

Y1 Z2 1 0 0

Y2 Z1 1 0 0

Y2 Z3 0 1 0

sum 3 1 1

但这仍然不是我要找的,有人能帮我吗?谢谢您!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值