首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫的[]和[[]]有什么区别?

熊猫的[]和[[]]有什么区别?
EN

Stack Overflow用户
提问于 2015-11-20 03:56:44
回答 5查看 4.6K关注 0票数 11

我对pandas中的索引列的结果感到困惑。

两者都有

代码语言:javascript
运行
复制
db['varname']

代码语言:javascript
运行
复制
db[['varname']]

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

EN

回答 5

Stack Overflow用户

发布于 2015-11-20 04:00:00

第一个是在df中查找特定的Key,即一个特定的列,第二个是要从df中子选择的列的列表,以便返回与列表中的值匹配的所有列。

另一个微妙之处是,第一个默认情况下将返回一个Series对象,而第二个将返回一个DataFrame,即使您传递的是包含单个项的列表

示例:

代码语言:javascript
运行
复制
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'>

所以当你传递一个列表时,它会尝试匹配所有元素:

代码语言:javascript
运行
复制
In [4]:
df[['VarName','Another']]

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

但是如果没有额外的[],这将引发一个KeyError

代码语言:javascript
运行
复制
df['VarName','Another']

KeyError: ('VarName', 'Another')

因为您随后会尝试查找一个名为:'VarName','Another'的列,但该列并不存在

票数 14
EN

Stack Overflow用户

发布于 2021-04-02 09:42:23

这接近于另一个,我从它得到了这个答案:https://stackoverflow.com/a/45201532/1331446,归功于@SethMMorton。

在这里回答,因为这是谷歌上最热门的,我花了很长时间才“明白”这一点。

Pandas在所有中都没有Pandas operator。

当你看到df[['col_name']]时,你真正看到的是:

代码语言:javascript
运行
复制
col_names = ['col_name']
df[col_names]

因此,[[为您做的唯一一件事就是使结果成为一个DataFrame,而不是一个Series。

DataFrame上的[查看参数的类型;如果是标量,则您只关注一列,并将其作为系列返回;如果是列表,则您必须针对一组列,因此它返回DataFrame (仅包含这些列)。

就这样!

票数 2
EN

Stack Overflow用户

发布于 2017-09-29 14:59:41

正如@EdChum指出的那样,[]将返回pandas.core.series.Series,而[[]]将返回pandas.core.frame.DataFrame

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33813223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档