Python 如何删除一个工作簿的多个Excel工作表中的重复列?

Python 如何删除一个工作簿的多个Excel工作表中的重复列?,python,excel,python-3.x,Python,Excel,Python 3.x,我在一个Excel工作簿中有多个工作表,每个工作表中有重复的列。我需要删除重复项,只保留原始列 我知道如何在工作表中放置副本 df_sheet_map['> Acute Hospital Bed SLM'] result2=df_sheet_map['> Acute Hospital Bed SLM'].T.drop_duplicates().T dfList = [] path = 'J:/TestDup' newpath = 'J:/TestDup/Test2' for f

我在一个Excel工作簿中有多个工作表,每个工作表中有重复的列。我需要删除重复项,只保留原始列

我知道如何在工作表中放置副本

df_sheet_map['> Acute Hospital Bed SLM']
result2=df_sheet_map['> Acute Hospital Bed SLM'].T.drop_duplicates().T

dfList = []
path = 'J:/TestDup' 
newpath = 'J:/TestDup/Test2'

for fn in os.listdir(path):
    file = os.path.join(path, fn)
    if os.path.isfile(file): 
        # Import the excel file and call it xlsx_file 
        xlsx_file = pd.ExcelFile(file) 
        # View the excel files sheet names 
        xlsx_file.sheet_names 
        # Load the xlsx files Data sheet as a dataframe 
        df = xlsx_file.parse('Sheet1',header= None) 
        df_NoHeader = df[2:] 
        data = df_NoHeader 
        # Save individual dataframe
        data.to_excel(os.path.join(newpath, fn))

        dfList.append(data) 

appended_data = pd.concat(dfList)
appended_data.to_excel(os.path.join(newpath, 'master_data.xlsx'))
上述代码正在运行。但是,我需要遍历所有图纸。此外,它显示要删除前两行,我需要更改为删除重复的行。

#转置工作簿中的所有工作表。然后删除重复项。然后调回原始文件并保存所有图纸
#转换工作簿文件中的所有工作表
导入pyexcel
将pyexcel_xlsx导入为pe
从pyexcel\u xlsx导入获取\u数据
book=pyexcel.get_book(file_name=“H:/SLM\u Final/SLM指示器模板Main to clean.xlsx”)
对于书本中的纸张:
sheet.transpose()
通过
book.save_as(“H:/SLM_Final/SLM指示器模板Main to clean.xlsx”)
#从python运行excel VB
将win32com.client作为win32导入
导入时间
xl=win32.Dispatch('Excel.Application')
xl.Visible=0
ss=xl.Workbooks.Open('H:/SLM\u Final/DeleteDup.xlsm')
xl.Run(“deleteDuplicate”)
时间。睡眠(30)
xl.Quit()
时间。睡眠(30)
#添加到excel工作簿的VB语法
''子删除重复项()
将ws设置为工作表
将wkbk1设置为工作簿
暗w长
暗淡的光线和长的一样
暗iCntr与长iCntr相同
设置wkbk1=Workbooks.Open(“H:/SLM\U最终/SLM指示器模板Main to clean.xlsx”)
'设置wkbk1=ThisWorkbook
wkbk1.激活
使用wkbk1
对于w=1到.Worksheets.Count
带工作表(w)
.UsedRange.RemoveDuplicates列:=数组(3,4),头:=xlYes
以
下一个w
以
wkbk1.保存
wkbk1.关闭
结束子节点“”“
#
#将文件转换回原始形状
导入pyexcel
将pyexcel_xlsx导入为pe
从pyexcel\u xlsx导入获取\u数据
book=pyexcel.get_book(file_name=“H:/SLM\u Final/SLM指示器模板Main to clean.xlsx”)
对于书本中的纸张:
sheet.transpose()
#工作表。删除重复项(保留=假,就地=假)
通过
book.save_as(“H:/SLM_Final/SLM指示器模板Main to clean.xlsx”)
我希望这会有所帮助。

#将工作簿中的所有工作表进行转换。然后删除重复项。然后调回原始文件并保存所有图纸
#转换工作簿文件中的所有工作表
导入pyexcel
将pyexcel_xlsx导入为pe
从pyexcel\u xlsx导入获取\u数据
book=pyexcel.get_book(file_name=“H:/SLM\u Final/SLM指示器模板Main to clean.xlsx”)
对于书本中的纸张:
sheet.transpose()
通过
book.save_as(“H:/SLM_Final/SLM指示器模板Main to clean.xlsx”)
#从python运行excel VB
将win32com.client作为win32导入
导入时间
xl=win32.Dispatch('Excel.Application')
xl.Visible=0
ss=xl.Workbooks.Open('H:/SLM\u Final/DeleteDup.xlsm')
xl.Run(“deleteDuplicate”)
时间。睡眠(30)
xl.Quit()
时间。睡眠(30)
#添加到excel工作簿的VB语法
''子删除重复项()
将ws设置为工作表
将wkbk1设置为工作簿
暗w长
暗淡的光线和长的一样
暗iCntr与长iCntr相同
设置wkbk1=Workbooks.Open(“H:/SLM\U最终/SLM指示器模板Main to clean.xlsx”)
'设置wkbk1=ThisWorkbook
wkbk1.激活
使用wkbk1
对于w=1到.Worksheets.Count
带工作表(w)
.UsedRange.RemoveDuplicates列:=数组(3,4),头:=xlYes
以
下一个w
以
wkbk1.保存
wkbk1.关闭
结束子节点“”“
#
#将文件转换回原始形状
导入pyexcel
将pyexcel_xlsx导入为pe
从pyexcel\u xlsx导入获取\u数据
book=pyexcel.get_book(file_name=“H:/SLM\u Final/SLM指示器模板Main to clean.xlsx”)
对于书本中的纸张:
sheet.transpose()
#工作表。删除重复项(保留=假,就地=假)
通过
book.save_as(“H:/SLM_Final/SLM指示器模板Main to clean.xlsx”)

我希望这会有所帮助。

我的尝试[导入熊猫作为pd df_sheet_map=pd.read_excel(“H:/SLM_Final/SLM Indicator template Main to clean.xlsx”,sheet_name=None)df_map['SLM By DHB']result1=df_sheet_map['SLM By DHB'].T.删除重复项().T df_sheet_map['>急性医院病床SLM']result2=df_sheet_map['].T.删除重复项().T,然后保存。我有100多张工作表要做同样的工作,请帮助MazinHi,我的答案很好。但是,任何改进都将不胜感激。我正在寻找一个在python中合并删除重复项的函数,而不是使用VB。我的尝试[import pandas as pd df_sheet\u map=pd.read\u excel](“H:/SLM_Final/SLM Indicator template Main to clean.xlsx”,sheet_name=None)df_sheet_map['SLM By DHB']result1=df_sheet_map['SLM By DHB'].T.drop_duplicates().T df_sheet_map['>急性病床SLM']result2=df_sheet_map['>急性病床SLM'].T.drop_duplicates().T,然后保存。我有100多张表要做同样的事情,请帮助MazinHi,我的答案很好。但是,如果有任何改进,我们将不胜感激。我正在寻找一个在python中包含删除重复项的函数,而不是使用VB。