Я строю цикл для загрузки нескольких файлов Excel, пробежки по разным листам и сбора информации - сохранения их в кадре данных pandas.Я часто сталкиваюсь с проблемами с файлами Excel или листом, которые немного отличаются от того, что ожидает мой код: как проверить имя файла Excel или номер листа проблемного файла / листа при обнаружении ошибки?Я полагаю, что я должен использовать попробовать и кроме, но я не уверен, как это сделать.
Я добавляю ниже мой код для рекомендаций .. спасибо!
path = r"C:\Users\---"
allFiles = glob.glob(path + "/*.xlsx")
frame_one = pd.DataFrame()
list_one = []
frame_sheet = pd.DataFrame()
list_sheet = []
for file_ in allFiles:
xl = pd.ExcelFile(file_)
n = len(xl.sheet_names) - 1
workbook = xlrd.open_workbook(file_, encoding_override="cp1252")
worksheet_0 = workbook.sheet_by_index(0)
df = pd.read_excel(file_, 0, header = 6, index_col=1, error_bad_lines=False)
df = df.drop(df.columns[0], axis=1)
df = df.dropna(how='all')
df = df.reset_index()
df = df.rename(columns={ df.columns[0]: "Month" })
df_t = df.T
df_t.columns = df_t.iloc[0]
df_t = df_t.iloc[1:]
df_t['Factory'] = worksheet_0.cell(2,2).value
df_t['Factory_id'] = worksheet_0.cell(3,2 ).value
df_t['Country'] = worksheet_0.cell(4,2 ).value
df_t['Consultant'] = worksheet_0.cell(5,2 ).value
df_t.columns = df_t.columns.str.replace(r'[^\x00-\x7F]+', '')
list_one.append(df_t)
for i in range(1, n):
df_1 = pd.read_excel(file_, i , header = 4, index_col=1)
worksheet_1 = workbook.sheet_by_index(i)
df_1 = df_1.drop(df_1.index[0])
df_1 = df_1.drop(df_1.index[-1])
df_1 = df_1.drop(df_1.columns[0], axis=1)
df_1 = df_1.dropna(axis=1, how='all')
for col in df_1.columns[0:3]:
df_1[col] = pd.to_numeric(df_1[col], errors='coerce')
df_1['mean'] = df_1.iloc[:, 0:3].mean(axis=1)
df_1 = df_1[['mean']]
df_1_t = df_1.T
df_1_t['Month'] = i
df_1_t['Factory'] = worksheet_0.cell(2,2).value
df_1_t['Factory_id'] = worksheet_0.cell(3,2).value
df_1_t['Country'] = worksheet_0.cell(4,2).value
df_1_t['Consultant'] = worksheet_0.cell(5,2).value
df_1_t.columns = df_1_t.columns.str.replace(r'[^\x00-\x7F]+', '')
list_sheet.append(df_1_t)
frame_sheet = pd.concat(list_sheet)
frame_one = pd.concat(list_one)