【问题标题】:Regular Expression to Remove Rows删除行的正则表达式
【发布时间】:2013-06-21 11:02:53
【问题描述】:

这是一个非常有趣的问题,我正在寻求专家的帮助以进一步了解它以及如何去做。我有一个 DataFrame(我在解析 Big Iron 的数据时制作的......仍然存在)。现在我想使用正则表达式删除一些行,但不知道它在 Pandas 中是如何工作的。

24 | DRFT.146.856 |    Dollar-  |  (60.00) | DEBITS-  |  0.00 |  CREDITSDRA- | 0.00   
25 |   0616-21.01 |      2407   |  WAYZAT  |   TMCD   | JUNE  |      16,DRA  |2013   
26 |          AND | CORRECTION  |JOURNAL00 |    <DB>  |KLRETY | CATEGORYDRA- |    *   
27 | DRFT.146.867 |    Dollar-  | (200.00) | DEBITS-  |  0.00 |  CREDITSDRA- | 0.00   
28 | DRFT.146.922 |   Dollar-   | (25.00)  |DEBITS-   | 0.00  | CREDITSDRA-  |0.00   
29 | DRFT.146.963 |    Dollar-  | (100.00) | DEBITS-  |  0.00 |  CREDITSDRA- | 0.00   
30 | DRFT.146.964 |    Dollar-  | (100.00) | DEBITS-  |  0.00 |  CREDITSDRA- | 0.00  

关注的行是 25 和 26,其中数据不遵循任何模式。任何线索。

【问题讨论】:

  • 您只想删除 id 25 和 26 吗?还是有关于为什么要删除它的模式?
  • 我建议在将它们放入DataFrame 之前将它们过滤掉。看起来某些列应该很容易检查模式或一组有限的有效值。就您对这些数据的理解而言,认为您可以最有效地过滤哪个字段?
  • @HamZa 有一个模式.. 这就是问题,因为我不知道位置和模式
  • @JonClements Prolem 在制作数据框之前有一堆已经“不需要”的复杂程序在运行,而我的控制权非常少。
  • 是否有类似“应用”行的等效函数。由于 apply 似乎仅适用于“列”。

标签: python regex pandas


【解决方案1】:

几个可能的竞争者:

In [11]: df[2].str.contains('Dollar')
Out[11]:
0     True
1    False
2    False
3     True
4     True
5     True
6     True
Name: 2, dtype: bool

In [12]: df[3].str.startswith('(')
Out[12]:
0     True
1    False
2    False
3     True
4     True
5     True
6     True
Name: 3, dtype: bool

做这种事情总是有点黑暗的艺术(因为通常有很多数据,有些可能看起来与好的数据非常相似)......

In [13]: df[df[3].str.startswith('(')]
Out[13]:
    0             1        2         3        4       5            6   7
0  24  DRFT.146.856  Dollar-    (60.00)  DEBITS-   0.00  CREDITSDRA-   0
3  27  DRFT.146.867  Dollar-   (200.00)  DEBITS-   0.00  CREDITSDRA-   0
4  28  DRFT.146.922  Dollar-    (25.00)  DEBITS-   0.00  CREDITSDRA-   0
5  29  DRFT.146.963  Dollar-   (100.00)  DEBITS-   0.00  CREDITSDRA-   0
6  30  DRFT.146.964  Dollar-   (100.00)  DEBITS-   0.00  CREDITSDRA-   0

【讨论】:

  • 这很有趣,安迪。我试图找到一种方法,可以使用“正则表达式”来确定要“保留”哪些行。看来我在那边可能会更成功。
  • 包含和其他几个字符串方法接受正则表达式。
  • 是的。听起来太酷了。只是一个快速的问题。如何删除条件为“False”的行
  • 参见第 [13] 行,这是最简单的方法 (df = df[df[3].str...])
  • 非常感谢您的回答。我现在接近解决方案了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 2011-07-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
相关资源
最近更新 更多