过滤熊猫中的混合dtype列会导致错误

时间:2019-12-04 01:31:41

标签: python pandas data-science

我正在清理数据文件,其中包含一些不正常的情况。我有一个像这样的值列表:

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似乎也妨碍了这种情况。当然,有一种简单的方法我可以忽略。赞赏任何人都能提供的智慧。

2 个答案:

答案 0 :(得分:1)

您可以使用|(或运算符)检查值是数字还是NaN

digitFilter = (dataset['data'].str.isdigit()) | (dataset['data'] == 'NaN')
dataset[digitFilter]

答案 1 :(得分:0)

也许您可以编写一个可以尝试的功能,除了上面所做的以外?

然后继续在第三街专栏中应用此功能!