2013-06-24 78 views
3

這是一個非常有趣的問題,我正在尋求專家的幫助來了解更多關於它以及如何去做。我有一個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其中數據沒有遵循任何模式。任何線索。

+0

你只是想刪除ID 25&26?或者您是否有想要刪除它的模式? – HamZa

+0

我建議在將它們放入DataFrame之前將它們過濾掉。它看起來像某些列應該很容易檢查模式或一組有限的有效值。就你理解這些數據而言 - 你認爲你可以最有效地過濾哪個領域? –

+0

@HamZa有一個模式..這就是問題,因爲我不知道的位置,只是模式 – LonelySoul

回答

4

幾個可能的競爭者:

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 
+0

這就是有趣的安迪。我試圖找到一種方法,通過該方法可以使用「正則表達式」來確定要「保留」哪些行。看來我可能在那裏獲得更多成功。 – LonelySoul

+0

包含和其他幾個字符串方法接受正則表達式。 –

+0

是的。聽起來太酷了。只是一個簡單的問題。如何刪除條件爲「False」的行 – LonelySoul