用python将xlsx文件中将选定列的重复信息删除,输出结果保存在xlsx最后新增sheet中

     日常处理xlsx文件时,经常需要按照文件中某一列的信息,筛选出非重复项,采用xlsx内部的函数可以实现,但相对较慢,可以用python编写一个GUI界面的程序。
    GUI的界面如下:
    
    输入文件行通过“Browse”按钮可以选择要处理的文件,支持xlsx格式文件
    关键字用于标示要选择的列,需填入该列第一行的数据。
   “处理文件”按钮触发文件处理。
    处理完成后,下边的文本框显示‘处理完成’
代码如下:

import PySimpleGUI as sg1
import pandas as pd 
import openpyxl

# All the stuff inside your window.
layout = [  [sg1.Text('输入文件'), sg1.Input(), sg1.FileBrowse(key='输入')],
            [sg1.Text('关键字   '), sg1.Input(key='关键值')],
            [sg1.Button('处理文件'), sg1.Cancel()],
            [sg1.Output() ]]
# Create the Window
window = sg1.Window('表格去重', layout)
# Event Loop to process "events" and get the "values" of the inputs
while True:
  event, values = window.read()
  if event in (None, 'Cancel'):  # if user closes window or clicks cancel
    break
  if event =='处理文件':
    io1 = values[ '输入']
    word1 = values['关键值']
    df = pd.read_excel(io1,index_col=None)
 
    #根据关键字word1去重
    #得到重复行的索引
    duplicate_row = df.duplicated(subset=[word1,],keep=False)
    #得到重复行数据
    duplicate_data = df.loc[duplicate_row,:]
    #重复行保留一个数据
    duplicate_data_one= duplicate_data.drop_duplicates(subset=[word1],keep="first").reset_index(drop=True)
    #得到无重复行数据
    no_duplicate = df.drop_duplicates(subset=[word1] ,keep=False)
    #合并数据
    Result = pd.concat([no_duplicate,duplicate_data_one])
      
    #在原文件最后写入处理结果
    excel_writer = pd.ExcelWriter(io1, engine='openpyxl')
    book = openpyxl.load_workbook(excel_writer.path)
    excel_writer.book = book
    Result.to_excel(excel_writer=excel_writer, sheet_name= '输出结果', index=None)
    excel_writer.close()
    print('处理完成')
    
window.close()

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值