python - 在 pandas 中过滤混合数据类型列会导致错误

标签 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]})

我的目标是过滤掉“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/

相关文章:

python - 在python 3.4中获取与数字成比例的范围内的值

python - 尝试获取 panda 数据框中列表中的第一项

python - 如果值在列数据框中,则 Pandas 获取行

python - 对测试数据集使用 cross_val_predict

python - 使用 Pandas 创建多个 DataFrame

python - 如何捕获另一个模块的打印输出?

python - 如何计算被随机字母包围的特定字符

python - django - 部署到 Heroku : Server Error(500)

pandas - Pandas 箱线图中的 mustache 究竟说明了什么?

python - 更改 DataFrame 中的 NaN 值