选择/重命名/简化MultiIndex数据帧

时间:2017-03-23 15:52:00

标签: pandas

在一些groupby和pivot操作之后,我得到的数据帧最终会出现多级列和索引值。

有人可以举例说明如何操作这些多值列吗?

例如,以下是列现在的样子:

>>> result.columns
MultiIndex(levels=[[u'min', u'median', u'mean', u'max', u'std', u'count'], [1, 2, 3, 4, 5]],
           labels=[[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5], [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]],
           names=[None, u'Nums'])

是否有办法将列重命名为以下级别的组合字符串:“1-min”,“3-median”。

为功能保留MultiIndex会更好吗,只需重命名标签? 我想找到一种方法来通过组合水平选择列(“1-min”,“3-median”)。

此外,现在当我将数据框导出到csv文件时,我将MultiIndex列值分为两行(第1行“min”第2行“1”),并希望将它们合并为一行。

这个问题有点宽泛,但我想知道哪些选项/功能可以用来处理这种结果。

任何建议赞赏

1 个答案:

答案 0 :(得分:0)

您可以获取MultiIndex的级别值并使用数组操作将它们添加到一起。

result.columns.get_level_values(1).astype(str) + '-' + result.columns.get_level_values(0)

Index(['1-min', '2-min', '3-min', '4-min', '5-min', '1-median', '2-median',
       '3-median', '4-median', '5-median', '1-mean', '2-mean', '3-mean',
       '4-mean', '5-mean', '1-max', '2-max', '3-max', '4-max', '5-max',
       '1-std', '2-std', '3-std', '4-std', '5-std', '1-count', '2-count',
       '3-count', '4-count', '5-count'],
      dtype='object')