吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 508|回复: 14
收起左侧

[求助] 求助大神,如何用python处理建设银行数据

[复制链接]
hncsysf 发表于 2024-1-13 20:15
建设银行提供的表格
原银行流水表格.png
想要处理后的表格
银行流水处理后.png

建设银行提供的是excle文件,根据账号分组,而原表格的客户姓名、客户账号以及卡号放在每一个账号分类中的第一排第一个单元格里面,如何转化成想要处理后的表格,请大神支招!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

为了青春 发表于 2024-1-13 22:47
为什么用python,直接在excel里重新编辑不行吗?
BrightXu 发表于 2024-1-14 02:00
直接用openpyxl 遍历每一行数据,然后再写入到新的xlsx不就行了?
cxx0515 发表于 2024-1-14 08:54
TXT2BIN 发表于 2024-1-14 09:36
1. 先对第一行数据进行两次按内容分割并清洗,变成二维表;
2. 将其他内容合并进入这个二维表,前三列,向下填充。
3. 多表合并。
qianxiaohe 发表于 2024-1-14 10:03
1.A列前插入三列
2.遍历D列,发现有"客户名称"的单元格,清洗出单元格数据,写入到当前行的下两行的A,B,C单元格
3.移除D列全部含有"客户名称"的行和"交易日期"的行
4.ABC列空单元格补全
5.重新加上表格列名
feiyu361 发表于 2024-1-14 10:43
直接在excel编辑反而更快
njbb888 发表于 2024-1-14 14:03
数据就直接贴出来了??
qianxiaohe 发表于 2024-1-14 17:20
from openpyxl import load_workbook

def 数据清洗(text):   
    # 数据清洗
    text = text.replace(":", ":")
    text = text.replace(",", ",")
    text = text.replace(" ", "")
    # 数据提取
    parts = text.split(",")  # 首先根据逗号分割
    parts = [part.split(":") for part in parts]  # 然后对每个部分根据冒号进行分割
    # 输出数据
    客户名称 = parts[0][1]
    客户账号 = parts[2][1]
    卡号 = parts[3][1]
    out_text = []
    out_text.append(客户名称)
    out_text.append(客户账号)
    out_text.append(卡号)
    return out_text

# 加载工作簿  
wb = load_workbook('原始工作簿.xlsx')

# 选择要操作的工作表  
sheet = wb['Sheet1']  # 假设要操作名为"Sheet1"的工作表  
new_sheet = wb.create_sheet('Sheet2')  # 输出工作表


# 遍历第1列的所有单元格,写入数据   
for row in sheet.iter_rows():
    cell = row[0]
    if '客户名称' in cell.value:
        text = 数据清洗(cell.value)
        sheet.cell(row=cell.row + 2, column=19).value = text[0]
        sheet.cell(row=cell.row + 2, column=20).value = text[1]
        sheet.cell(row=cell.row + 2, column=21).value = text[2]

    # 如果单元格是日期,并且后面新建的单元格为空,则将其值设置为上方单元格的值
    if ('-' in cell.value) and sheet.cell(row=cell.row, column=19).value is None:
        sheet.cell(row=cell.row, column=19).value = sheet.cell(row=cell.row-1, column=19).value
        sheet.cell(row=cell.row, column=20).value = sheet.cell(row=cell.row-1, column=20).value
        sheet.cell(row=cell.row, column=21).value = sheet.cell(row=cell.row-1, column=21).value

    # 如果单元格是交易日期
    if '交易日期' in cell.value:
        sheet.cell(row=cell.row, column=19).value = '客户名称'
        sheet.cell(row=cell.row, column=20).value = '客户账号'
        sheet.cell(row=cell.row, column=21).value = '卡号'


# 把第二行的表头加上   
for row in sheet.iter_rows(min_row=2, max_row=2,min_col=1, max_col=21, values_only=True):
    new_sheet.append(row)
   

# 假设你的数据从第1行开始,筛选出A列中不含"客户名称"和"交易日期"的所有行  
for row in sheet.iter_rows(min_row=1, max_row=sheet.max_row, min_col=1, max_col=21, values_only=True):  
    if ("客户名称" not in row[0]) and("交易日期" not in row[0]):  
        # 将筛选出的行添加到新的工作表中
        new_sheet.append(row)

# 保存修改后的工作簿  
wb.save('原始工作簿.xlsx')
sai609 发表于 2024-1-14 18:42
复制粘贴到一张大表,把重复的剔除,直接excel即可
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-16 18:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表