python - 如何读取缺少值和 'delim_whitespace=True'的csv文件?

标签 python pandas

我想知道是否可以简单地删除任何导致错误的行而不是引发异常。

我的问题与处理文本文件有关,例如:

111 aaa 222 bbb
1   a   2   b
11      22

由于作为分隔符的空格数量不同,我使用选项“delim_whitespace=True”来读取_csv 函数。不过,我还通过“dtype”参数明确指定数据类型。

pandas 将值 22 转移到第三行的第二列是很自然的(我不相信有办法让它相信它实际上属于第三行)。然而,由于第二列预计是字符串,因此会引发异常。

我知道这可能可以使用“转换器”参数来解决,但我担心性能,因为数据文件非常大(数百万行)。

那么是否可以删除编号或列数较低的行(较高的行有“error_bad_lines”)或删除在重新输入期间引起异常的任何行。或者您还有其他想法吗?

最佳答案

使用 pandas.read_fwf 读取文件。这将用 NaN 值填充空字符串。

=^..^=

import pandas as pd

data = pd.read_fwf('data.txt', header=None)
data.columns = ["c1", "c2", "c3", "c4"]

负载:

    c1   c2   c3   c4
0  111  aaa  222  bbb
1    1    a    2    b
2   11  NaN   22  NaN

接下来只需删除具有 NaN 值的行:

out_data = data.dropna()

输出:

    c1   c2   c3   c4
0  111  aaa  222  bbb
1    1    a    2    b

关于python - 如何读取缺少值和 'delim_whitespace=True'的csv文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56631703/

相关文章:

python - Python中变量的绑定(bind)顺序

python - 需要其他方式来停止我的游戏(pygame)!

python - 随着时间的推移增加 python 进程内存

Python Panda.read_csv 四舍五入得到导入错误?

python - Pandas 日期未显示在绘图上

python-3.x - 在 Pandas 数据框中运行嵌套循环时丢失行

python - Pandas Filter 函数返回了一个 Series,但需要一个标量 bool

python - Python中的排序列表导致错误

pandas - 有没有办法根据 pandas 中的唯一值对列进行排序?

python - 如何使用 html5lib 解析 HTML,并使用 XPath 查询解析后的 H​​TML?