如果存在多索引,熊猫将不允许选择列?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果存在多索引,熊猫将不允许选择列?相关的知识,希望对你有一定的参考价值。
我正在调试一些熊猫代码,这些代码意外地创建了MultiIndex而不是常规索引。由于索引多,Pandas不允许选择列。在这种情况下,我可以摆脱MultiIndex,但是如果确实需要该MultiIndex,那么如何选择列?附加信息-我在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
[这两个陈述均对only integer scalar arrays can be converted to a scalar index
产生误导性错误那么,在有多索引的情况下如何选择列?我知道一些技巧,例如unstack
或更改索引等。但似乎应该有一个简单的方法?
更新:事实证明这在熊猫0.22.0中工作正常,但在0.25.1中失败。看起来引入了回归错误。我已经在熊猫github上报告了它。
答案
使用DataFrame.xs
功能:
DataFrame.xs
以上是关于如果存在多索引,熊猫将不允许选择列?的主要内容,如果未能解决你的问题,请参考以下文章