Python将excel表多列按索引转化为一列(数据透视)

将该表中每一行数据里不为0的列重新组织:在这里插入图片描述
按第一列的索引,记录不为0的POI类型及数量作为一条事务

在这里插入图片描述
该功能类似Excel的数据透视表,但是有时候数据太大就很难实现。
利用Python进行处理,代码如下:

#处理数据,将一行多列数据按索引值整理为一行
import pandas as pd
from pandas import DataFrame
from openpyxl import load_workbook

#读取并打开目录下的表
excel_name = r"./newmerge.xlsx"   #输入的数据
newexcel_name = r"./result.xlsx"  #输出的数据
data = pd.read_excel(excel_name,sheet_name="APRIORI")
#取表名
sheetname = list(data)
[a,b] = data.shape
print(a,b)
n = data.values    #转化data为np数组
#创建数组存放数值不为0的数据
array_FID = []
array_PTYPE = []
array_COUNT = []
for i in range(a):
	for j in range(b-1):
         if(n[i][j+1]>0):
             print(i,sheetname[j+1],n[i][j+1])
             array_FID.append(i)
             array_PTYPE.append(sheetname[j+1])
             array_COUNT.append(n[i][j+1])
print(array_PTYPE)
# 指定合并后的数据放在哪个excel里
writer = pd.ExcelWriter(newexcel_name,engine="openpyxl")
book = load_workbook(excel_name)
writer.book = book
df = {
    "fid": array_FID,
    "poitype": array_PTYPE,
    "poicount": array_COUNT,
}
alldata = pd.DataFrame(df)
# 指定合并后的数据放在哪个sheet里
alldata.to_excel(excel_writer=writer,
                   sheet_name="alldata",index= None)
writer.save()
writer.close()
print('处理完成!')
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值