Pandas Dataframe, как группировать столбцы в Python - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть пандас Dataframe, и я хочу сгруппировать некоторые столбцы для построения столбцов более высоких уровней:

Пример: у меня есть

Index       A       B       C       D
    1    0.25     0.3    0.25    0.66
    2    0.25     0.3    0.25    0.66
    3    0.25     0.3    0.25    0.66

, и я хочу

    Index              AB        ||           CD
    Subindex       A   |      B  ||      C    |      D 
    1            0.25  |    0.3  ||   0.25    |    0.66
    2            0.25  |    0.3  ||   0.25    |    0.66
    3            0.25  |    0.3  ||   0.25    |    0.66

Спасибо за вашу помощь ...

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

groupby / concat взломать

m = {'A': 'AB', 'B': 'AB', 'C': 'CD', 'D': 'CD'}
pd.concat(dict((*df.groupby(m, 1),)), axis=1)

         AB         CD      
          A    B     C     D
Index                       
1      0.25  0.3  0.25  0.66
2      0.25  0.3  0.25  0.66
3      0.25  0.3  0.25  0.66
0 голосов
/ 11 декабря 2018

Создайте словарь для определения вашего отображения и используйте pd.MultiIndex.from_tuples.При необходимости вы также можете указать names=['level_0', 'level_1'] для добавления имен.

import pandas as pd

d = {'A': 'AB', 'B': 'AB', 'C': 'CD', 'D': 'CD'}
df.columns = pd.MultiIndex.from_tuples([*zip(map(d.get, df), df)])
# Equivalently
# df.columns = pd.MultiIndex.from_tuples([(d[col], col) for col in df.columns])

Вывод:

         AB         CD      
          A    B     C     D
Index                       
1      0.25  0.3  0.25  0.66
2      0.25  0.3  0.25  0.66
3      0.25  0.3  0.25  0.66
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...