Цикл по листам Excel - индекс массива вне диапазона - PullRequest
0 голосов
/ 09 марта 2019

У меня есть Excel с 17 листами, и я запускаю цикл для извлечения данных со всех листов, кроме первого.Все листы одинаково структурированы, но что-то не так происходит, когда у меня = 6, когда я получаю следующую ошибку:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-244-ea6f45e973a4> in <module>()
      4     df_1 = pd.read_excel(r'C:\Users\filippo.sebastio\OneDrive - ELEVATE\Target\Target Download 28 Feb\Quantitative data\SCHAEFER_Putian ZhangSheng\zhangsheng  --   RSAP Factory Metrics Tool- Hardcopy Form draft to publish 2018 12.xlsx', i , header = 4, index_col=1)
      5     worksheet_1 = workbook.sheet_by_index(i)
----> 6     month = worksheet_1.cell(5,4).value
      7     df_1 = df_1.drop(df_1.index[0])
      8     df_1 = df_1.drop(df_1.index[-1])

~\Anaconda3\lib\site-packages\xlrd\sheet.py in cell(self, rowx, colx)
    406             xfx = None
    407         return Cell(
--> 408             self._cell_types[rowx][colx],
    409             self._cell_values[rowx][colx],
    410             xfx,

IndexError: array index out of range

Это мой цикл

frame = pd.DataFrame()
list_ = []
for i in range(1,17):
    df_1 = pd.read_excel(r'C:\Users\filippo.sebastio\OneDrive - ELEVATE\Target\Target Download 28 Feb\Quantitative data\SCHAEFER_Putian ZhangSheng\zhangsheng  --   RSAP Factory Metrics Tool- Hardcopy Form draft to publish 2018 12.xlsx', i , header = 4, index_col=1)
    worksheet_1 = workbook.sheet_by_index(i)
    month = worksheet_1.cell(5,4).value 
    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'] = month
    df_1_t['Factory'] = worksheet_1.cell(3,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
    list_.append(df_1_t)

list_    
frame = pd.concat(list_)

frame

Я проверил и конкретныйячейка в листе не пустая (все листы одинаковы и заполнены одинаково).Кроме того, петля отлично работает на всех остальных листах - (от 1 до 5 и от 7 до 17).В чем может быть проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...