2015-11-19 23 views
1

我对大熊猫索引列结果感到困惑。熊猫的[]和[[]]有什么区别?

两个

db['varname'] 

db[['varname']] 

给我 'varname的' 的列值。但是看起来有一些细微差别,因为db['varname']的输出显示了值的类型。

回答

3

第一个在您的df中查找具体的Key,第二个列是从df中选择的列的列表,因此它返回与列表中的值匹配的所有列。

另一个微妙的是,第一个在默认情况下会返回一个Series对象,而第二返回DataFrame即使你传递一个包含单个项目

示例清单:

In [2]: 
df = pd.DataFrame(columns=['VarName','Another','me too']) 
df 

Out[2]: 
Empty DataFrame 
Columns: [VarName, Another, me too] 
Index: [] 

In [3]:  
print(type(df['VarName'])) 
print(type(df[['VarName']])) 

<class 'pandas.core.series.Series'> 
<class 'pandas.core.frame.DataFrame'> 

所以当你通过一个列表,然后它试图匹配所有元素:

In [4]: 
df[['VarName','Another']] 

Out[4]: 
Empty DataFrame 
Columns: [VarName, Another] 
Index: [] 

但没有额外的[]那么这将引发一个KeyError

df['VarName','Another'] 

KeyError: ('VarName', 'Another') 

因为你再试图找到一个名为列:'VarName','Another'不存在

0

由于@EdChum指出,“[]”将返回大熊猫.core.series.Series,而'[[]]'将返回pandas.core.frame.DataFrame。

两者在熊猫中都是不同的数据结构。