导入多个略有不同的excel文件

时间:2019-05-09 12:04:08

标签: python excel pandas

我必须将表格从多个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)

这是一种解决方法,我希望有一个更简单的解决方案

0 个答案:

没有答案