Чтение нескольких листов заголовка Excel в пандах - PullRequest
1 голос
/ 08 марта 2019

У меня есть лист Excel с несколькими заголовками без индексного столбца.Когда я читаю Excel в пандах, первый столбец рассматривается как индекс.Я хочу, чтобы панды создали индекс, а не рассматривали 1-й столбец как индекс.Любая помощь будет оценена.

Я попробовал ниже код:

df = pd.read_excel(file, header=[1,2], sheetname= "Ratings Inputs", parse_cols ="A:AA", index_col=None)

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Из моих тестов read_csv кажется сломанным с многострочным заголовком: когда index_col отсутствует или отсутствует, он ведет себя так, как было 0.

У вас есть 2 возможных обходных пути здесь:

  1. reset_index в соответствии с предложением @mounaim:

    df = pd.read_excel(file, header=[1,2], sheetname= "Ratings Inputs",
                       parse_cols ="A:AA", index_col=None).reset_index()
    

    Это почти правильно, за исключением того, что заголовок для первых столбцов используется для именования MultiIndex df.columns, а первый столбец называется `('index', ''). Поэтому вы должны воссоздать его:

    df.columns = pd.MultiIndex.from_tuples([tuple(df.columns.names)]
                                       + list(df.columns)[1:])
    
  2. Читать отдельно заголовки

    head = pd.read_excel('3x3.xlsx', header=None, sheetname= "Ratings Inputs",
                       parse_cols ="A:AA", skiprows=1, nrows=2)
    df = pd.read_excel(file, header=2, sheetname= "Ratings Inputs",
                       parse_cols ="A:AA", index_col=None).reset_index()
    df.columns = pd.MultiIndex.from_tuples(list(head.transpose().to_records(index=False)))
    
0 голосов
/ 08 марта 2019

Вы пробовали reset_index () :
your_data_frame.reset_index(drop=True,inplace=True)

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