Pandas Dataframe,如何在Python中将列分组

时间:2018-12-10 21:50:46

标签: python pandas dataframe group-by

我有一个Pandas Dataframe,我想对一些列进行分组以构建更高级别的列:

示例:我有

VisionDeviceComponent

我想要

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

谢谢您的帮助...

2 个答案:

答案 0 :(得分:4)

创建一个字典来定义您的映射并使用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

答案 1 :(得分:2)

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