【问题标题】:How do I interpret this notation?我如何解释这个符号?
【发布时间】:2019-11-19 07:20:35
【问题描述】:

符号 s[s] 如何以及为何起作用?

我正在学习 kaggle.com 上的一门微课程,它们使用符号 s[s],如下所示。我以前没见过。 X_train 是一个 pandas DataFrame。

它是一个对自身进行切片的列表吗?有人能帮忙澄清一下吗?

s = (X_train.dtypes == 'object') ## assigns True to variables == 'object'
object_cols = list(s[s].index)
> s

Type              True
Method            True
Regionname        True
Rooms            False
Distance         False
Postcode         False
Bedroom2         False
Bathroom         False
Landsize         False
Lattitude        False
Longtitude       False
Propertycount    False
dtype: bool
> s[s]

Type          True
Method        True
Regionname    True
dtype: bool

【问题讨论】:

  • 这是有效的,因为s 是一个布尔数组(嗯。系列在技术上是正确的。但你明白了),并不是在任何情况下都适用。这与在这种特殊情况下传递 s[some_boolean_array] 相同。
  • 就像列表切片。 [] 有效,因为 DataFrames ans Series 具有 __getitem__ 方法。你所拥有的几乎是说Type, Method, Regionname 列有dtypes == objectBoolean indexing on DataFrames or Series
  • 重点是s 不是一个列表,它是一个熊猫数据框。 pandas 的主要功能之一是您可以通过许多复杂的方式过滤它们。这包括使用 df 作为索引。

标签: python pandas


【解决方案1】:

这很复杂。

X_train 是一个熊猫数据框。

X_train.dtypes 返回一个熊猫系列,其中索引(每行的名称)等于列名。

我们现在对返回新系列的系列执行 ==,其值为 true 或 false。所以它看起来像:

a True b False c True

现在我们得到 x[x] ,它表示要删除“假”值,给出一个新的系列:

a True c True

现在我们做 .index 并把它变成一个列表来给出

['a', 'c' ]

【讨论】:

    【解决方案2】:

    Pandas DataFrames 允许您使用index using boolean arrays,这就是s[] 中的使用方式。如您所见,Series 的值为TrueFalse,因此我们选择s 的值,其中sTrue。此代码的目的是获取数据类型为object 的列,您可以使用函数pandas.DataFrame.select_dtypes 来代替:

    list(X_train.select_dtypes(include=['object']).columns)
    

    【讨论】:

      猜你喜欢
      • 2010-12-27
      • 1970-01-01
      • 2013-07-27
      • 2014-04-22
      • 1970-01-01
      • 2010-10-10
      • 2015-06-11
      • 2018-07-11
      • 2018-12-31
      相关资源
      最近更新 更多