【问题标题】:Extracting rows for a Pandas dataframe in Python在 Python 中为 Pandas 数据框提取行
【发布时间】:2013-05-23 10:03:52
【问题描述】:

我已将一个简单的查询日志导入 Python 中的 pandas 数据框(见图),并且想知道最有效的方法是提取包含“关键字”中包含的任何给定关键字的所有行' 列。

我可以遍历数据框 - 但感觉可能有更快的方法使用数组/掩码。

非常感谢任何帮助。

【问题讨论】:

  • 您的关键字似乎是数字(您是否正确阅读了数据框?)。另外,将来请您复制并粘贴数据框的实际代码(而不是图像),我们可以复制并粘贴它并更轻松地回答您的问题...

标签: python pandas dataframe


【解决方案1】:

您可以使用str.contains,例如:

In [1]: df = pd.DataFrame([['abc', 1], ['cde', 2], ['efg', 3]])

In [2]: df
Out[2]:
     0  1
0  abc  1
1  cde  2
2  efg  3

In [3]: df[0].str.contains('c')
Out[3]:
0     True
1     True
2    False
Name: 0, dtype: bool

In [4]: df[df[0].str.contains('c')]
Out[4]:
     0  1
0  abc  1
1  cde  2

【讨论】:

  • 感谢 Andy,当 df[0].str.contains('c') 返回 NA/NaN 时我该如何应对?
  • 使用 df[df[0].str.contains('c') == True] 应该处理 NaN。 :)
【解决方案2】:
[3]: df = DataFrame(dict(A = ['foo','bar','bah','bad','bar'],B = range(5)))

In [4]: df
Out[4]: 
     A  B
0  foo  0
1  bar  1
2  bah  2
3  bad  3
4  bar  4

In [5]: select = Series(['bar','bah'])

In [6]: df[df.A.isin(select)]
Out[6]: 
     A  B
1  bar  1
2  bah  2
4  bar  4

【讨论】:

  • 感谢您,并为未粘贴表格而导致字段未对齐而道歉 - 我可以确认我正确导入了数据,并且“关键字”列确实是包含字符串的列。您上面的建议几乎就在那里,因为它匹配关键字列中的整个单元格 - 但是我如何匹配子字符串?
  • Andy 的答案包含该解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 2014-07-24
相关资源
最近更新 更多