Почему я не читаю фрейм данных в ответ на параметр skip_cols или метод pd.set_index ()? - PullRequest
0 голосов
/ 28 июня 2019

У меня есть фрейм данных, который я прочитал с

 energy = pd.read_excel('Energy Indicators.xls', skiprows = 16, 
 skip_footer = 38, skip_cols = 2)
 energy.set_index('Unnamed: 2')

, и он возвращает следующий фрейм данных (первая строка не идеальна, но я могу решить это позже)

    Unnamed: 0   Unnamed: 1   Unnamed: 2   Energy Supply    Energy Supply per Capita
 0  NaN          NaN          NaN          Petajoules       Gigajoules
 1  NaN          Afghanistan  Afghanistan  321              10
 2  NaN          Albania      Albania      102              35
 3  NaN          Algeria      Algeria      1959             51
 4  NaN          Andorra      Andorra      9                121
 5  Nan          Angola       Angola       642              27

Я ожидал, что датафрейм выглядит следующим образом: ['Безымянный: 0'] и ['Безымянный: 1'] опущены, а ['Безымянный: 2'] установлены в качестве индекса, как показано ниже:

    Unnamed: 2   Energy Supply    Energy Supply per Capita
 0  NaN          Petajoules       Gigajoules
 1  Afghanistan  321              10
 2  Albania      102              35
 3  Algeria      1959             51
 4  Andorra      9                121
 5  Angola       642              27

но ничего из этого не происходит (и когда я опускаю соответствующий параметр и set_index, он остается идентичным. Когда я пытаюсь выполнить код с помощью skip_cols или set_index (), он снова идентичен. Почему эти два бита кода ничего не меняют для меня?

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Похоже, что параметр skip_cols не работает (используется pd.__version__ '0.23.0'). Вместо этого вы можете попробовать использовать параметр usecols, если знаете диапазоны столбцов. Вы также можете установить столбец индекса внутри pd.read_excel следующим образом:

energy = pd.read_excel('Energy Indicators.xls', usecols='C:E', index_col=0, skiprows=16, skip_footer=38)

print(energy)

            EnergySupply EnergySupplyperCapita
NaN           Petajoules            Gigajoules
Afghanistan          321                    10
Albania              102                    35
Algeria             1959                    51
Andorra                9                   121
Angola               642                    27
0 голосов
/ 28 июня 2019

В вашем коде, когда вы устанавливаете индекс в третьей строке, вы должны передать флаг на месте как true

 energy = pd.read_excel('Energy Indicators.xls', skiprows = 16, 
 skip_footer = 38, skip_cols = 2)
 energy.set_index('Unnamed: 2', inplace=True) #Here pass inplace flag

Таким образом, этот индекс установлен для оригинального фрейма данных, а не для его копии.

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