将层次结构或多索引应用于pandas列

时间:2014-03-07 11:45:15

标签: python python-2.7 pandas dataframe

我已经看到很多关于如何按层次排列数据帧行索引的示例,但我正在尝试对列执行相同的操作并且不理解语法:

我正在阅读csv文件中的内容,如下所示

df=pandas.read_csv("data.csv")

和data.csv包含类似的内容:

rno,marktheory1,marklab1,marktheory2,marklab2
1,78,45,34,54
2,23,54,87,46

所以在[1]中:df 给出

   rno  mark1  lab1  mark2  lab2
0    1     78    45     34    54
1    2     23    54     87    46

我想要做的是在列中添加分层索引甚至类似于标记的内容,以便它们看起来像这样:

        Subject1     Subject2   
   rno  mark1  lab1  mark2  lab2
0    1     78    45     34    54
1    2     23    54     87    46

1 个答案:

答案 0 :(得分:2)

以下是适合您的快速解决方案:

data = pd.read_csv('data.csv')
>>> arrays = [[ '', 'Subject1', 'Subject1', 'Subject2', 'Subject2'], data.columns]
>>> df = pd.DataFrame(data.values, columns=arrays)
>>> print df
        Subject1        Subject2      
   rno     mark1  lab1     mark2  lab2
0    1        78    45        34    54
1    2        23    54        87    46

[2 rows x 5 columns]

另一种做同样的方法:

>>> data = pd.read_csv('data.csv')
>>> data_pieces = [data.ix[:, [0]], data.ix[:, [1, 2]], data.ix[:, [3,4]]]
>>> data = pd.concat(data_pieces, axis=1, keys=['','Subject1', 'Subject2'])
>>> print data
        Subject1        Subject2      
   rno     mark1  lab1     mark2  lab2
0    1        78    45        34    54
1    2        23    54        87    46

[2 rows x 5 columns]