我要过滤的数字少于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 .
有人可以帮助我吗? 非常感谢。
答案 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)