我必须将表格从多个Excel文件导入到python,特别是使用Panda Dataframe格式。 问题是excel文件的结构不一样, 特别是在某些表格中,表格是在单元格A1处开始的,而在另一表格中,表格是在单元格A2甚至B1或B2处开始的。 在所有excel文件中唯一保持不变的是位于表第一行的标题。
因此,例如,在表最右边的第一行中,总是将其写为“设置”。但是“设置”有时写在位置A1,有时写在位置B2。
当前,我只是为每个单个excel手动修改pandas.read_excel方法中的numHeader和跳过参数,但是由于有很多文件每次都手动执行此操作,因此非常浪费时间。
CurrExcelFile = pd.read_excel(Files[i], \
header=numHeader, skiprows=skip)
是否存在,或者可以很容易地编写一个包,该包将用于标识表的第一个元素的字符串作为参数?
这样我就可以通过“设置”,脚本可以自动获取单元格的索引并开始从那里获取数据。
更新: 因此,目前我通过首先导入整个工作表,找到它的“设置”值,然后删除不必要的列,重命名数据框并最后删除不必要的行来进行管理。
Test = pd.read_excel('excelfile',sheet_name='sheetname')
#Find the index and the column of the first cell
for column in Test.columns:
tmp = Test[column] == "setting"
if len(Test.loc[tmp].index) == 1:
RowInd = Test.loc[tmp].index[0]
ColPos = Test.columns.get_loc(column)
#Drop Columns
ColumnsToDrop = Test.columns[np.arange(0,ColPos)]
Test.drop(ColumnsToDrop, inplace=True, axis=1)
#Rename Axis
Test.columns = (Test.iloc[RowInd])
#Drop Rows
Test.drop(np.arange(0,RowInd+1), inplace=True, axis=0)
这是一种解决方法,我希望有一个更简单的解决方案