Python:遍历Excel工作表,将标题信息分配给每个工作表上的列,然后合并到一个文件中

问题描述 投票:0回答:1

我是Python的新手,正在尝试使某些任务自动化。我有一个包含8个工作表的Excel文件,其中每个工作表的顶部都有一些标识符,其后是带有标题的表格数据。每个工作表在同一位置具有感兴趣的标识符和表格。我想做的是从每张纸的顶部提取一些数据并将其作为列插入,删除不需要的行(在我将其中一些分配给列之后)和列,然后合并为一个CSV文件作为输出。

我编写的代码可以完成这项工作。我的代码读取每个工作表,在工作表上执行操作,然后在使用.concat合并它们之前,对下一个工作表启动相同的过程(8次)。

import pandas as pd
import numpy as np
inputfile = "input.xlsx" 
outputfile = "merged.csv"

##LN X: READ FIRST SHEET AND ASSIGN HEADER INFORMATION TO COLUMNS

df1 = pd.read_excel(inputfile, sheet_name=0, usecols="A:N", index=0)

#Define cell locations of fields in the header area to be assigned to 
columns
#THIS CELL LOCATIONS ARE SAME ON ALL SHEETS
A = df1.iloc[3,4]
B = df1.iloc[2,9]
C = df1.iloc[3,9]
D = df1.iloc[5,9]
E = df1.iloc[4,9]

#Insert well header info as columns in data for worksheet1
df1.insert(0,"column_name", A)

df1.insert(1,"column_name", B)

df1.insert(4,"column_name", E)

# Rename the columns in `enter code here`worksheet1 DataFrame to reflect 
actual column headers
df1.rename(columns={'Unnamed: 0': 'Header1', 
               'Unnamed: 1': 'Header2', }, inplace=True)         

df_merged = pd.concat([df1, df2, df3, df4, df5, df6, df7, 
  df8],ignore_index=True, sort=False)

#LN Y: Remove non-numerical entries

df_merged = df_merged.replace(np.nan, 0)

##Write results to CSV file

df_merged.to_csv(outputfile, index=False)

由于此代码将用于具有不同工作表数量的其他Excel文件,因此我正在寻找有关如何在循环中的每个工作表中包含重复操作的指针。基本上每张纸在LN X到LN Y之间重复步骤(8次!!)。我正在为如何使用循环功能而苦苦挣扎,在此先感谢您的帮助。

python-3.x pandas
1个回答
1
投票

df1 = pd.read_excel(inputfile,sheet_name = 0,usecols =“ A:N”,index = 0)

您应该将参数sheet_name更改为

sheet_name = None

然后df1将是DataFrames的字典。然后您可以使用

遍历df1

对于df1中的df:

df1 [df] .insert(0,“ column_name”,A)....

现在执行您的操作并合并dfs。您可以再次遍历它们,并将它们连接到一个最终的df中。

© www.soinside.com 2019 - 2024. All rights reserved.