如何用大熊猫在一列中过滤字母和数字

时间:2018-07-23 04:50:37

标签: python-3.x pandas

我要过滤的数字少于3个,包括“。”:

import pandas as pd
data = {"numbers":[1,2,".", 3,4, "."]}
data
{'numbers': [1, 2, '.', 3, 4, '.']}
df=pd.DataFrame(data)
df
numbers
0       1
1       2
2       .
3       3
4       4
5       .

我想要的结果应该是这样的:

numbers
0       1
1       2
2       .
5       .

有人可以帮助我吗? 非常感谢。

3 个答案:

答案 0 :(得分:0)

您可以使用

In [198]: df[pd.to_numeric(df.numbers, errors='coerce').lt(3) | df.numbers.eq('.')]
Out[198]:
  numbers
0       1
1       2
2       .
5       .

答案 1 :(得分:0)

为数字等于m的地方创建一个掩码.

m = df.numbers == '.'

将与.不匹配的行转换为int,并检查它们是否低于阈值。组合两个滤波器以获得所需的输出。

df[m | (df.numbers[~m].astype(int) < 3)]
#outputs:
  numbers
0       1
1       2
2       .
5       .

答案 2 :(得分:0)

一种解决方法,

(1, 3, 5)
(2, 4, 6)