Преобразование многоуровневых многоиндексных имен в столбец DataFrame, Python 3.6 - PullRequest
2 голосов
/ 20 марта 2019

Data.columns:

MultiIndex(levels=[['PDARS1M', 'PDARS1Y', 'PDKRW1M'], ['EB', 'EO', 'ER']],
       labels=[[2, 0, 1, 2, 0, 1, 2, 0, 1], [0, 0, 0, 2, 2, 2, 1, 1, 1]],
       names=['Instrument', 'Field'])

Данные:

PDKRW1M PDARS1M PDARS1Y PDKRW1M PDARS1M PDARS1Y PDKRW1M PDARS1M PDARS1Y
EB  EB  EB  ER  ER  ER  EO  EO  EO
1125    40  53  1126    40  53  1127    40  54
1125    41  54  1126    41  54  1127    41  55
1126    41  54  1127    41  54  1128    41  55

Я хочу объединить Data.columns.levels [0] и Данные.columns.levels [1] и обновить как Data.columns

Я использовал приведенный ниже скрипт, но получил ошибки

Data.columns = Data.columns.levels[0] + '|' + Data.columns.levels[1]

"ValueError: Length mismatch: Expected axis has 9 elements, new values have 3 elements"

Ожидаемое имя столбца данных:

PDKRW1M|EB, PDARS1M|EB, PDARS1Y|EB, PDKRW1M|ER, PDARS1M|ER, PDARS1Y|ER, PDKRW1M|EO, PDARS1M|EO, PDARS1Y|EO

1 Ответ

2 голосов
/ 20 марта 2019

Используйте map с join:

Data.columns = Data.columns.map('|'.join)

Или списком:

Data.columns = [f'{a}{b}' for a, b in Data.columns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...