python - Pandas 中双括号 `[[...]]` 和单括号 `[..]` 索引之间的区别

标签 python pandas syntax

我对以下代码行的语法感到困惑:

x_values = dataframe[['Brains']]

数据框对象由 2 列(大脑和 body )组成

Brains Bodies
42     34
32     23

当我打印 x_values 时,我得到这样的结果:

Brains
0  42
1  32

就 dataframe 对象的属性和方法而言,我了解 pandas 文档,但双括号语法让我感到困惑。

最佳答案

考虑一下:

来源 DF:

In [79]: df
Out[79]:
   Brains  Bodies
0      42      34
1      32      23

选择一列 - Pandas.Series 中的结果:

In [80]: df['Brains']
Out[80]:
0    42
1    32
Name: Brains, dtype: int64

In [81]: type(df['Brains'])
Out[81]: pandas.core.series.Series

选择 DataFrame 的子集 - 生成 DataFrame:

In [82]: df[['Brains']]
Out[82]:
   Brains
0      42
1      32

In [83]: type(df[['Brains']])
Out[83]: pandas.core.frame.DataFrame

结论:第二种方法允许我们从 DataFrame 中选择多个列。第一个仅用于选择单列...

演示:

In [84]: df = pd.DataFrame(np.random.rand(5,6), columns=list('abcdef'))

In [85]: df
Out[85]:
          a         b         c         d         e         f
0  0.065196  0.257422  0.273534  0.831993  0.487693  0.660252
1  0.641677  0.462979  0.207757  0.597599  0.117029  0.429324
2  0.345314  0.053551  0.634602  0.143417  0.946373  0.770590
3  0.860276  0.223166  0.001615  0.212880  0.907163  0.437295
4  0.670969  0.218909  0.382810  0.275696  0.012626  0.347549

In [86]: df[['e','a','c']]
Out[86]:
          e         a         c
0  0.487693  0.065196  0.273534
1  0.117029  0.641677  0.207757
2  0.946373  0.345314  0.634602
3  0.907163  0.860276  0.001615
4  0.012626  0.670969  0.382810

如果我们在列表中只指定一列,我们将得到一个包含一列的 DataFrame:

In [87]: df[['e']]
Out[87]:
          e
0  0.487693
1  0.117029
2  0.946373
3  0.907163
4  0.012626

关于python - Pandas 中双括号 `[[...]]` 和单括号 `[..]` 索引之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54464279/

相关文章:

python - 为 Python Web 应用程序设置环境变量

python - 为 Pandas 使用多个核心

JavaScript 函数..命名?

python - 从嵌套字典到扁平化数据框

ruby - 是否有一种快捷方式可以用 ruby​​ 中使用的方法的返回值来分配某个变量?

Objective-C block 语法

python - 使用 Sympy 删除多项式的低阶项

python - 如何使用带有分区和复制的 pykafka 创建新主题?

python - 如果 python 中满足两个条件,则返回列表索引

python - 在比较 pandas dataframe 中的列后,python 是否可以替换列表中的单词?