Pandas Dataframe仅按一列过滤行

时间:2019-01-04 00:21:55

标签: python pandas numpy dataframe

我想通过仅在给定列中保留符合正则表达式模式的行来过滤数据帧。文档中的示例仅通过在数据框(documentation to filter)的每一列中查找该正则表达式进行过滤

那么我该如何更改以下示例

df.filter(regex='^[\d]*', axis=0)

如下所示:(仅在指定列中查找正则表达式)

df.filter(column='column_name', regex='^[\d]*', axis=0)

2 个答案:

答案 0 :(得分:2)

使用由给定列和正则表达式模式构成的布尔掩码过滤DataFrame,如下所示:   df[df.column_name.str.contains('^[\d]*', regex=True)]

答案 1 :(得分:2)

使用vectorized string method contains()match()-参见Testing for Strings that Match or Contain a Pattern

df[df.column_name.str.contains('^\d+')]

df[df.column_name.str.match('\d+')]    # Matches only start of the string

请注意,我删除了多余的括号([],并用*替换了+,因为\d*会一直匹配

也匹配出现(所谓的零长度匹配。)