首页 > 解决方案 > 根据不同的列值调用列名?

问题描述

我想非常简单地根据不同的列值调用 df 中的列。

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

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,则返回 Minutes 列中的所有值

标签: pythonpython-3.xpandasdata-sciencedata-analysis

解决方案


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

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

df.xx == 20

你会得到一个布尔系列

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

因此,我假设您对给定列中特定值的质疑实际上应该表示为:此列中的任何元素是否具有特定值?.

您可以使用any()函数检查它:

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

这次结果将是一个布尔

在你的情况下,你可以写:

if (df.column_name == '1-5').any():
    result = df.Minutes

当然,如果没有怎么办?您想要结果变量中的另一列吗?

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

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

result = df[src_col]

请注意,这一次:

  • 列名在括号之间,
  • 但它没有被撇号包围,

所以目标列名由这个变量的值表示。

以及关于Chris90评论的评论:

如果你写df.loc[df['column_name'] == '1-5','Minutes'] 你会得到一个

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

但是您写道,您想要此列中的所有值


推荐阅读