我对大熊猫索引列结果感到困惑。熊猫的[]和[[]]有什么区别?
两个
db['varname']
和
db[['varname']]
给我 'varname的' 的列值。但是看起来有一些细微差别,因为db['varname']
的输出显示了值的类型。
我对大熊猫索引列结果感到困惑。熊猫的[]和[[]]有什么区别?
两个
db['varname']
和
db[['varname']]
给我 'varname的' 的列值。但是看起来有一些细微差别,因为db['varname']
的输出显示了值的类型。
第一个在您的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'
不存在
由于@EdChum指出,“[]”将返回大熊猫.core.series.Series,而'[[]]'将返回pandas.core.frame.DataFrame。
两者在熊猫中都是不同的数据结构。