我正在清理一个包含一些不规则内容的数据文件。我有一个像这样的值列表:
import numpy as np
import pandas as pd
dataset = pd.DataFrame.from_dict({'data':['1','2','3','Third Street',np.nan]})
我的目标是过滤掉“Third Street”列,同时保留 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 似乎也妨碍了这一点。当然,有一种我忽略的简单方法可以做到这一点。欣赏任何人可以提供的任何智慧。
最佳答案
您可以使用|
(OR运算符)来检查值是否为数字或NaN
digitFilter = (dataset['data'].str.isdigit()) | (dataset['data'] == 'NaN')
dataset[digitFilter]
关于python - 在 pandas 中过滤混合数据类型列会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59167729/