Pandas - 如何根据正则表达式过滤行

时间:2016-09-27 19:18:56

标签: python pandas dataframe

请告诉我如何根据[0-9]或[A-Z]等字符范围使用Pandas过滤行。

这样的情况,其中所有列类型都是对象

A         B
2.3     234
4.5     4b6
7b       275

我想检查列A中的所有值是否为浮点数意味着包含[0-9]和'。' ? 我知道pd.to_numeric,applymap,isreal,isdigit等,但在将其转换为任何数字之前,这是对象列我想知道非浮点值的问题规模。

数据集中的哪些行包含[0-9]

以外的字符

1 个答案:

答案 0 :(得分:1)

试试这个:

In [8]: df
Out[8]:
     A    B
0  2.3  234
1  4.5  4b6
2   7b  275
3   11   11

In [9]: df.A.str.match(r'^\d*\.*\d*$')
Out[9]:
0     True
1     True
2    False
3     True
Name: A, dtype: bool

In [10]: df.loc[df.A.str.match(r'^\d*\.*\d*$')]
Out[10]:
     A    B
0  2.3  234
1  4.5  4b6
3   11   11

<强>更新

从Pandas 0.20.1 the .ix indexer is deprecated, in favor of the more strict .iloc and .loc indexers开始。