Excel to Pandas с многоуровневым индексом, выдающим NaN - PullRequest
0 голосов
/ 17 апреля 2019

Я использую этот набор данных:

https://www.ons.gov.uk/employmentandlabourmarket/peopleinwork/employmentandemployeetypes/datasets/commutingtoworkbygenderukcountryandregion

Загружен таким образом:

commuting_data_xls = pd.ExcelFile(commuting_data_filename)
commuting_data_sheets = commuting_data_front['Table description '].dropna()
commuting_data_1 = pd.read_excel(commuting_data_xls, '1', header=4, usecols=range(1,13))
commuting_data_1.dropna().dropna(axis=1)

Полученный иерархический индекс получает строки только там, где все столбцы индексауказаны.

enter image description here

Как я могу исправить это и назвать столбцы индекса?

1 Ответ

0 голосов
/ 26 апреля 2019

Попробуйте выполнить следующие действия:

  1. Открыть, используя pd.read_excel (), только нужный вам лист и диапазон.

    commuting_data_xls = pd.read_excel ("commutingdata.xlsx", '1', заголовок = 4, usecols = range (1,13))

  2. Сброс мультиимена индексов.

    commuting_data_xls.index.names = ['Gender', 'Work_Region', 'Region']

Сбросить индекс, а затем ограничить строки, чтобы исключитьитоги, я полагаю, вы хотите, чтобы они ушли?Если нет, просто удалите шаг iloc.

commuting_data_xls = commuting_data_xls.reset_index().iloc[0:28]

Удалите столбец «Work_Region», так как это кажется излишним.

commuting_data_xls = commuting_data_xls.loc[:,commuting_data_xls.columns != 'Work_Region']

Заполните столбец Gender, чтобы заменить NaN

commuting_data_xls['Gender'].fillna(method='ffill', inpldace=True)

Сбросьте индекс, если он соответствует вашим целям.

commuting_data_xls.set_index('Gender', 'Region')
...