Непоследовательный анализ заголовков Excel в кадре данных pandasPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Непоследовательный анализ заголовков Excel в кадре данных pandas

Сообщение Anonymous »

Рассмотрим следующую таблицу в Excel:

Код: Выделить всё

                    h1  h1_1    h1_2    h1_3
h2  h2_1    h2_2    h2_3
h3  h3_1    h3_2    h3_3

h4  h4_1    h4_2    h4_3
h5  h5_1    h5_2    h5_2
i1  i2      i3      h6  h6_1    h6_2    h6_2
i1_2    i1_3    foo
i2_2    i2_3    foo
i3_2    i3_3    foo                 1
Эта таблица имеет 7 строк заголовков и 4 индексных столбца. Более того, индексы и заголовки имеют имена, а имя заголовка h6 перекрывается с именем индекса i4.
Я анализирую это с помощью pandas следующим образом:

Код: Выделить всё

import pandas as pd
df_scratch = pd.read_excel('scratch2.xlsx', index_col=[0,1,2,3], header=[0,1,2,3,4,5,6])
Однако тогда кажется, что первая строка пропущена:

Код: Выделить всё

df_scratch
h1  h1_1    h1_2    h1_3
h2  h2_1    h2_2    h2_3
h3  h3_1    h3_2    h3_3
Unnamed: 4_level_3  Unnamed: 5_level_3  Unnamed: 6_level_3
h4  h4_1    h4_2    h4_3
h5  h5_1    h5_2    h5_2
h6  h6_1    h6_2    h6_2
i2_1    i3_1    foo
NaN     i2_2    i3_2    foo     NaN     NaN     NaN
i2_3    i3_3    foo     NaN     NaN     1.0
Для подтверждения df_scratch.loc[pd.IndexSlice[:,'i1_2',:]] возвращает KeyError: 'i1_2', а df_scratch.loc [pd.IndexSlice[:,'i2_2',:]] возвращает:

Код: Выделить всё

        h1  h1_1    h1_2    h1_3
h2  h2_1    h2_2    h2_3
h3  h3_1    h3_2    h3_3
Unnamed: 4_level_3  Unnamed: 5_level_3  Unnamed: 6_level_3
h4  h4_1    h4_2    h4_3
h5  h5_1    h5_2    h5_2
h6  h6_1    h6_2    h6_2
i1_3    foo
NaN     i2_3    foo     NaN     NaN     NaN
Если я анализирую на одну строку заголовка меньше, то последняя строка заголовка интерпретируется как данные:

Код: Выделить всё

import pandas as pd
df_scratch = pd.read_excel('scratch2.xlsx', index_col=[0,1,2,3], header=[0,1,2,3,4,5])

h1  h1_1    h1_2    h1_3
h2  h2_1    h2_2    h2_3
h3  h3_1    h3_2    h3_3
Unnamed: 4_level_3  Unnamed: 5_level_3  Unnamed: 6_level_3
h4  h4_1    h4_2    h4_3
h5  h5_1    h5_2    h5_2
i1  i2  i3  h6  h6_1    h6_2    h6_2
i1_2    i1_3    foo     NaN     NaN     NaN
i2_2    i2_3    foo     NaN     NaN     NaN
i3_2    i3_3    foo     NaN     NaN     1
Можно ли сразу прочитать правильный макет, или мне нужно сначала прочитать файл Excel без каких-либо заголовков/индексов и добавить их после прочтения?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -dataframe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»