hncsysf 发表于 2024-1-13 20:15

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

建设银行提供的表格

想要处理后的表格


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

为了青春 发表于 2024-1-13 22:47

为什么用python,直接在excel里重新编辑不行吗?

BrightXu 发表于 2024-1-14 02:00

直接用openpyxl 遍历每一行数据,然后再写入到新的xlsx不就行了?

cxx0515 发表于 2024-1-14 08:54

vba也挺快吧

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 = # 然后对每个部分根据冒号进行分割
    # 输出数据
    客户名称 = parts
    客户账号 = parts
    卡号 = parts
    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
    if '客户名称' in cell.value:
      text = 数据清洗(cell.value)
      sheet.cell(row=cell.row + 2, column=19).value = text
      sheet.cell(row=cell.row + 2, column=20).value = text
      sheet.cell(row=cell.row + 2, column=21).value = text

    # 如果单元格是日期,并且后面新建的单元格为空,则将其值设置为上方单元格的值
    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) and("交易日期" not in row):
      # 将筛选出的行添加到新的工作表中
      new_sheet.append(row)

# 保存修改后的工作簿
wb.save('原始工作簿.xlsx')

sai609 发表于 2024-1-14 18:42

复制粘贴到一张大表,把重复的剔除,直接excel即可
页: [1] 2
查看完整版本: 求助大神,如何用python处理建设银行数据