【问题标题】:How to filter out rows in Table based on the row values?如何根据行值过滤掉表中的行?
【发布时间】:2021-08-27 17:14:00
【问题描述】:

我是 python 的初学者,有一个非常基本的问题。 所以在这里,我创建了一个如下表。

A = make_array("a", "b", "c", "d", "e", "f", "g")
B = make_array("No", "10%", "5%", "No", "15%", "21%", "3%")
test = Table().with_columns("A", A, "B", B)

我想过滤掉包含“否”的行,只留下具有整数百分比值的行。我尝试过使用 where 函数,但没有成功。

test_new = test.where("B" != "No")

谁能指导我如何做到这一点? 作为最终目标,我想要一张只有 b、c、e、f、g 的桌子。

编辑:我正在使用 Numpy 库和数据科学包。

【问题讨论】:

  • Python 没有原生的Table 类型——你用的是什么库?
  • 我正在使用 Numpy 库和数据科学包。会有帮助吗?
  • 嗯,它会帮助您获得更好的答案,并帮助其他人理解您的问题,因为它提供了上下文。我已将它们添加为标签,以使事情朝着正确的方向发展。
  • 非常感谢!我相应地编辑了我的帖子。

标签: python numpy data-science


【解决方案1】:

我建议您为此使用pandas。你可以这样做,

import pandas as pd

# Create a df with some example data
df = pd.DataFrame({"A": ["a", "b", "c", "d", "e", "f", "g"], "B": ["No", "10/%", "5/%", "No", "15/%", "21/%", "3/%"]})

# Only select rows for which column B is not "No". 
df['A'][~df['B'].str.contains("No")]

注意这里我使用了contains(),所以如果单元格中包含子字符串“No”,也会被选中。如果您想进行精确比较,可以执行以下操作:

df = pd.DataFrame({"A": ["a", "b", "c", "d", "e", "f", "g"], "B": ["No", "10/%", "5/%", "No", "Non", "21/%", "3/%"]})

df['A'][~(df['B'] ==  "No")]

【讨论】:

  • 非常感谢您的评论!我可以写得更清楚,我正在使用 NumPy 库和数据科学包。您的方法在这些条件下似乎不起作用,可能是因为您的方法是数据框,而我的方法是表格。我想知道是否有任何方法可以对 numpy 和数据科学做同样的事情,还是我必须使用 panda?
  • 这是你使用的包吗:pypi.org/project/datascience?
猜你喜欢
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2015-03-24
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多