2025年利用pandas建一张列自适应的表

利用pandas建一张列自适应的表场景是统计总公司分子公司下的收入情况 表格如下 公司名称 支付宝 微信 银联 其他 备注 小明有限公司 10 0 30 0 砸锅卖铁 小强有限公司 0 20 0 10 换不锈钢盆 只做一个导出功能 我修改记录表中数据对原有值无影响 所有我只在 mysql 数据库中建了一张 record 表 用来记录子公司有收入

大家好,我是讯享网,很高兴认识大家。

场景是统计总公司分子公司下的收入情况,表格如下

讯享网
公司名称 支付宝 微信 银联 其他 备注
小明有限公司 10 0 30 0 砸锅卖铁
小强有限公司 0 20 0 10 换不锈钢盆

只做一个导出功能,我修改记录表中数据对原有值无影响,所有我只在mysql数据库中建了一张record表,用来记录子公司有收入,收入类别具体值没有专门建表来存储,只能通过汇总信息得来,查询之后,对于单个公司返回的数据接口如下

讯享网min_data = [{"INCOME_NUM": 10, "INCOME_NAME": "支付宝"},{"INCOME_NUM": 30, "INCOME_NAME": "银联"}] 

将其转化为dataframe格式

import pandas as pd read_data = pd.DataFrame(min_data)

具体数据格式如下:

INCOME_NUM INCOME_NAME
0 10 支付宝
1 30 银联

 

需要进行一步操作将INCOME_NAME的值变为列名,进行两步操作

首先进行转置

讯享网read_data = read_data.T read_data = read_data.reset_index(drop=True)

具体数据格式如下:


讯享网

0 1
0 10 30
1 支付宝 微信

再利用numpy取出列值赋值就可以给columns即可

import numpy as np read_data_array = np.array(read_data)

具体数据格式为

讯享网[[10 30] ['支付宝' '微信']]

进行赋值操作 

read_list = read_data_array.tolist() r_list = read_list[1] read_data.columns = r_list read_data.drop([1], inplace=True)

得到我们想要的数据格式

支付宝 微信
0 10 30

我们还有一个存放公司信息的dataframe

讯享网company_data = pd.DataFrame([{"公司名称": "小明有限公司", "备注":"砸锅卖铁"}]) 利用创建一个merge_word的字段利用merge就可以合并为一条完整的数据 company_data['merge_word'] = 1 read_data['merge_word'] = 1 readData = pd.merge(company_data, read_data, how='left', left_on='merge_word', right_on='merge_word') readData = readData.drop('merge_word', axis=1)

最终数据格式如下 

公司名称 支付宝 微信 备注
小明有限公司 10 30 砸锅卖铁

存在多条这样的数据将其放一个列表,利用concat就可以合并

rm_data = [] rm_data.append(read_data) writeData = pd.concat(rm_data).reset_index(drop=True)

进行如下操作就可以将公司名称列放在第一排,备注列放在最后一排

讯享网#将备注放在最后一列 comment = writeData['备注'] writeData.pop('备注') writeData = writeData.fillna(0) writeData.insert(writeData.shape[1], '备注', comment) #将公司名称放在第一列 company_name = writeData['公司名称'] writeData.pop('公司名称') writeData.insert(0, '公司名称', company_name) 

下面就是写入环节,不在赘述,简单放代码

import xlwt excelBook = xlwt.Workbook(encoding='utf-8') excelFileName = "company_data" excelSheetName = "2022-06" excelSheet = excelBook.add_sheet(excelSheetName, cell_overwrite_ok=True) row_count = writeData.shape[1] column_count = len(writeData) #取列名赋值给单元格 columns_name = list(writeData.columns.values) for i in range(len(columns_name)): excelSheet.write(0, i, columns_name[i]) #往表中写入数值 nRow = 0 for i in range(column_count): nRow += 1 row = writeData.loc[i] for j in range(len(row)): excelSheet.write(nRow, j, row[j]) nginx_url = "..../" + excelFileName excelBook.save(nginx_url.encode('utf-8')) 

pandas简直太强了,作为理论物理系的学生,当初为啥不好好学啊

小讯
上一篇 2025-03-10 19:52
下一篇 2025-03-23 12:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/75267.html