Python 熊猫赢了';如果存在';什么是多重索引?

Python 熊猫赢了';如果存在';什么是多重索引?,python,pandas,Python,Pandas,我正在调试一些pandas代码,它们意外地创建了一个多索引而不是常规索引。由于多索引,熊猫将不允许选择列。在这种情况下,我可以去掉多索引,但如果我确实需要多索引,您如何选择列? 其他信息--我在pandas 0.25.1中遇到了这个错误,但是这个代码是在几年前有人写的笔记本中,所以很明显它用于旧版本 import numpy as np import pandas as pd names = ['FirstColumn', 'SecondColumn'] data = np.array([[5

我正在调试一些pandas代码,它们意外地创建了一个多索引而不是常规索引。由于多索引,熊猫将不允许选择列。在这种情况下,我可以去掉多索引,但如果我确实需要多索引,您如何选择列? 其他信息--我在pandas 0.25.1中遇到了这个错误,但是这个代码是在几年前有人写的笔记本中,所以很明显它用于旧版本

import numpy as np
import pandas as pd

names = ['FirstColumn', 'SecondColumn']
data = np.array([[5,6],[7,8]])
df = pd.DataFrame(data, columns = [names]) #Bug: this "works" but isn't what you want.
#The brackets around "[names]" creates a multi-index but that was unintentional.
#But "df.head()" and "df.describe()" both look normal so you can't see anything is wrong. 

df['FirstColumn'] #ERROR! works fine with a single index, but fails with multiindex
df.FirstColumn #ERROR! works fine with a single index, but fails with multiindex
df.loc[:,'FirstColumn'] #ERROR! works fine with a single index, but fails with multiindex
这两种说法都给出了关于
的误导性错误,只有整数标量数组才能转换为标量索引
那么,当存在多索引时,如何选择列呢?我知道一些技巧,比如
取消堆栈
或更改索引等;但似乎应该有一个简单的方法

更新:结果表明,这在0.22.0中运行良好,但在0.25.1中失败。看起来引入了一个回归错误。我已经在pandas github上报告过了。

使用函数:

print (df.xs('FirstColumn', axis=1, level=0))
  FirstColumn
0           5
1           7

谢谢,行得通。但我是否疯狂地认为这是非常不直观的,标准的“.loc”语法应该在这里工作?@user2543623-我认为这是因为它是非标准的多索引,因为只有一个级别。。。