如何使用panda过滤一列中的字母和数字



我想过滤小于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       .

有人能帮我吗?非常感谢。

您可以使用

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

为其中的数字等于.创建掩码m

m = df.numbers == '.'

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

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

解决此问题的一种方法,

print df[(df['numbers']<3)|(df['numbers']=='.')]

相关内容

最新更新