Создание мультииндекса из 2 строк с дублированными столбцами - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть файл Excel, который я читаю с помощью панд и преобразую в кадр данных.Вот пример кадра данных:

|               | salads_count | salads_count | salads_count | carrot_counts | carrot_counts | carrot_counts |
|---------------|--------------|--------------|--------------|---------------|---------------|---------------|
|               | 01.2016      | 02.2016      | 03.2016      | 01.2016       | 02.2016       | 03.2016       |
| farm_location |              |              |              |               |               |               |
| sweden        | 42           | 41           | 43           | 52            | 51            | 53            |

Это очень странное форматирование, но это то, что находится в файле Excel.Сначала первые 2 строки даже не в многоиндексной форме.

Мне удалось перевести его в мультииндекс с кодом ниже, но некоторые столбцы дублируются (например, salads_count появляется несколько раз):

arrays = [df.columns.tolist(), df.iloc[0].tolist()]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples)
df.columns = index

Я хотел бы преобразовать столбцы в мультииндекс, что-то вроде этого:

|               | salads_count |         |         | carrot_counts |         |         |
|---------------|--------------|---------|---------|---------------|---------|---------|
|               | 01.2016      | 02.2016 | 03.2016 | 01.2016       | 02.2016 | 03.2016 |
| farm_location |              |         |         |               |         |         |
| sweden        | 42           | 41      | 43      | 52            | 51      | 53      |

Или даже лучше, как это:

|               | 01.2016      |              | 02.2016      |             |   |   |
|---------------|--------------|--------------|--------------|-------------|---|---|
|               | carrot_count | salads_count | carrot_count | salad_count |   |   |
| farm_location |              |              |              |             |   |   |
| sweden        | 52           | 42           | 51           | 41          |   |   |

Как я могу сделатьэто?

1 Ответ

0 голосов
/ 22 ноября 2018

Лучше всего конвертировать столбцы в MultiIndex в read_excel по параметру header=[0,1]:

df = pd.read_excel(file, header=[0,1])

Затем используйте swaplevel с sort_index:

df = df.swaplevel(0,1, axis=1).sort_index(axis=1, level=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...