我想通过仅在给定列中保留符合正则表达式模式的行来过滤数据帧。文档中的示例仅通过在数据框(documentation to filter)的每一列中查找该正则表达式进行过滤
那么我该如何更改以下示例
df.filter(regex='^[\d]*', axis=0)
如下所示:(仅在指定列中查找正则表达式)
df.filter(column='column_name', regex='^[\d]*', axis=0)
答案 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*
会一直匹配