我正在清理数据文件,其中包含一些不正常的情况。我有一个像这样的值列表:
import numpy as np
import pandas as pd
dataset = pd.DataFrame.from_dict({'data':['1','2','3','Third Street',np.nan]})
我的目标是在保留NaN值的同时过滤掉“第三条街”列。
dataset['data'].astype(int)
ValueError: invalid literal for int() with base 10: 'Third Street'
这很有意义,因为最后一个值不能转换为整数。
尝试过滤非数字列会过滤掉我要保留的NaN值:
digitFilter = dataset['data'].str.isdigit()
dataset[digitFilter]
ValueError: cannot index with vector containing NA / NaN values
我也尝试过堆叠过滤器,但是NaN似乎也妨碍了这种情况。当然,有一种简单的方法我可以忽略。赞赏任何人都能提供的智慧。
答案 0 :(得分:1)
您可以使用|
(或运算符)检查值是数字还是NaN
digitFilter = (dataset['data'].str.isdigit()) | (dataset['data'] == 'NaN')
dataset[digitFilter]
答案 1 :(得分:0)
也许您可以编写一个可以尝试的功能,除了上面所做的以外?
然后继续在第三街专栏中应用此功能!