将正则表达式应用于Pandas Column

时间:2017-04-07 16:45:24

标签: python regex pandas

我有一个DataFrame,我想过滤掉#34;糟糕的数据"用正则表达式。在我的用例中,column_b中任何一行中包含4个相同数字的数字都被视为" bad"。

这是我的代码:

import pandas as pd
import numpy as np
df1 = pd.DataFrame({'A' : [np.NaN,np.NaN,3,4,5,5,3,1,5,np.NaN], 
                    'B' : [1111111,1234567,2222,55555,0,0,np.NaN,9,0,0], 
                    'E' : ['Assign','Unassign','Assign','Ugly','Appreciate','Undo','Assign','Unicycle','Assign','Unicorn',]})
print(df1)

bad_data = df1[df1['B'].astype(str).str.contains(r'(\d)\1{3,}')]
print(bad_data)

     A          B       E
0  NaN  1111111.0  Assign
2  3.0     2222.0  Assign
3  4.0    55555.0    Ugly

我的代码有效。但我得到了这个用户警告:UserWarning: This pattern has match groups. To actually get the groups, use str.extract.

这是关于here的讨论。在该示例之后。我将我的正则表达式更改为使用非捕获组(?...)

bad_data = df1[df1['B'].astype(str).str.contains(r'(?:(\d))\1{3,}')] 

但我仍然接受了用户警告。无论我尝试在哪里或有多少非限制营养组。我可以过滤掉其他链接中的警告。但是,我做错了什么/可能会做得更好,以防止警告弹出

0 个答案:

没有答案