Python 多索引数据帧的列名称-奇怪的行为

Python 多索引数据帧的列名称-奇怪的行为,python,pandas,multi-index,Python,Pandas,Multi Index,我在多索引dataFrames.columns中观察到一些奇怪的行为 构造多索引数据帧: a=[0,.25, .5, .75] b=[1, 2, 3, 4] c=[5, 6, 7, 8] d=[1, 2, 3, 5] df=pd.DataFrame(data={('a','a'):a, ('b', 'b'):b, ('c', 'c'):c, ('d', 'd'):d}) 生成此数据帧 a b c d a b c d 0 0.00 1 5 1 1 0

我在多索引dataFrames.columns中观察到一些奇怪的行为

构造多索引数据帧:

a=[0,.25, .5, .75]
b=[1, 2, 3, 4]
c=[5, 6, 7, 8]
d=[1, 2, 3, 5]
df=pd.DataFrame(data={('a','a'):a, ('b', 'b'):b, ('c', 'c'):c, ('d', 'd'):d})
生成此数据帧

      a  b  c  d
      a  b  c  d
0  0.00  1  5  1
1  0.25  2  6  2
2  0.50  3  7  3
3  0.75  4  8  5
df1=df.copy().loc[:,[('a', 'a'), ('b', 'b')]]
使用原始数据帧的子集创建新变量

      a  b  c  d
      a  b  c  d
0  0.00  1  5  1
1  0.25  2  6  2
2  0.50  3  7  3
3  0.75  4  8  5
df1=df.copy().loc[:,[('a', 'a'), ('b', 'b')]]
生产与预期类似的产品:

      a  b
      a  b
0  0.00  1
1  0.25  2
2  0.50  3
[('a', 'a'), ('b', 'b')]
但是访问此新数据帧的列名会产生一些意外的输出:

print df1.columns

MultiIndex(levels=[[u'a', u'b', u'c', u'd'], [u'a', u'b', u'c', u'd']],
           labels=[[0, 1], [0, 1]])
所以('b','b')和('c','c')仍然被包含

相比之下

print df1.columns.tolist()
回报与预期一致:

      a  b
      a  b
0  0.00  1
1  0.25  2
2  0.50  3
[('a', 'a'), ('b', 'b')]
有人能给我解释一下这种行为的原因吗?

我想你需要
0.20.0
版本中的新功能