根据不同的列值调用列名?

时间:2019-06-20 03:43:33

标签: python python-3.x pandas data-science data-analysis

我想非常简单地基于不同的列值在df中调用一列。

下面是我要使用的方法,但是如何在此之上添加另一种方法,即在名为分钟或 df ['minutes'] 的列中提供所有值如果另一个名为 column_name 的值是特定值?

df.loc[df['column_name'] == some_value]

样本数据:

column_name | Minutes
   1-5           19
   6-10          22
   11-15          8
   1-5           11
   6-10          33

我要过滤column_name =该列中的任何值,并返回分钟列下的所有值。

因此,如果column_name为1-5,则返回“分钟”列中的所有值

2 个答案:

答案 0 :(得分:2)

DataFrame通常包含多个行(和列)。

因此,如果您询问特定列(例如 xx )是否具有某些值:

self

您将获得具有以下内容的布尔系列

    df 复制的
  • 索引,
  • 值,说明是否 xx 列在此行 == 20

所以我假设您质疑给定列中的特定值 实际上应表示为:此列中的 any 个元素 有特殊价值吗?

您可以使用 any()函数对其进行检查:

included

这次,结果将是 布尔值

您可以写:

df.xx == 20

当然可以质疑如果不可以的话? 您是否要在 result 变量中的另一个列?

另一种方法是在某些变量中设置列名, 根据您的某些逻辑说出 src_col

然后,设置此变量,您可以将所需的列引用为:

(df.xx == 22).any()

请注意,这次:

  • 列名在方括号之间,
  • 用撇号包围

因此目标列名称由该变量的表示。

以及 Chris90 关于评论的评论:

如果您写 df.loc [df ['column_name'] =='1-5','Minutes'] 您将从以下位置获得单个值:

  • 列名中包含 1-5 string )的行,
  • 分钟列。

但是您写道,您希望从此列中所有值

答案 1 :(得分:1)

您是否希望返回的值比数据框或序列之类的东西更简单:

[19,11]

这个?

然后使用如下所示的tolist()方法:

df.loc[df['column_name'] == "1-5"]["Minutes"].tolist()