python - 将制表符分隔的文本文件读入 Pandas 数据帧时出现 RunTimeError

标签 python pandas csv runtime-error

我正在将一个制表符分隔的文本文件读入 pandas 数据框。我在阅读此文件时遇到运行时错误。我浏览了与此错误相关的帖子,所有这些帖子都暗示了不应该修改字典的规则在迭代它们的同时。在我的例子中,我所做的只是读取一个文件。这个问题如何与迭代和更改字典的错误相关联?

>>> import pandas as pd
>>> df=pd.read_csv("dummy_data.txt",header=None,chunksize=10000,error_bad_lines=False,warn_bad_lines=True,engine='c',sep="\t",encoding="latin-1")
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    df=pd.read_csv("dummy_data.txt",header=None,chunksize=10000,error_bad_lines=False,warn_bad_lines=True,engine='c',sep="\t",encoding="latin-1")
  File "/home/avadhut/.virtualenvs/avadhut_virtual/lib/python3.5/site-packages/pandas/io/parsers.py", line 709, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "/home/avadhut/.virtualenvs/avadhut_virtual/lib/python3.5/site-packages/pandas/io/parsers.py", line 431, in _read
    compression = _infer_compression(filepath_or_buffer, compression)
  File "/home/avadhut/.virtualenvs/avadhut_virtual/lib/python3.5/site-packages/pandas/io/common.py", line 270, in _infer_compression
    filepath_or_buffer = _stringify_path(filepath_or_buffer)
  File "/home/avadhut/.virtualenvs/avadhut_virtual/lib/python3.5/site-packages/pandas/io/common.py", line 157, in _stringify_path
    from py.path import local as LocalPath
  File "/home/avadhut/.virtualenvs/avadhut_virtual/lib/python3.5/site-packages/py/__init__.py", line 148, in <module>
    'Syslog'             : '._log.log:Syslog',
  File "/home/avadhut/.virtualenvs/avadhut_virtual/lib/python3.5/site-packages/py/_vendored_packages/apipkg.py", line 63, in initpkg
    for module in sys.modules.values():
RuntimeError: dictionary changed size during iteration

编辑 1: 通过交互模式读取文件时,我在尝试读取文件时遇到了两次相同的错误。第三次运行同一行时没有抛出任何错误。这种不稳定行为的原因可能是什么?

>>> df=pd.read_csv("product_name.txt",header=None,chunksize=10000,error_bad_lines=False,warn_bad_lines=True,engine='c',sep="\t",encoding="latin-1")

编辑 2: 要在此处复制错误,请链接到 1000 行数据集: S3 link to the dataset

编辑 3:找到一个具有类似问题的链接:Pandas CSV file with occasional extra column 但是其中提到的标志 (error_bad_lines) 在我的情况下似乎不起作用。

>>> df = pd.read_csv("unclean.csv", error_bad_lines=False, header=None)

编辑 4: 我开发了一个脚本来将虚拟数据(在编辑 2 中提到)加载到 pandas 数据帧,然后将其保存到 hdf5 文件。我运行了这个脚本 20 次,但没有一次遇到 RuntimeError。另一方面,在尝试时在交互模式下读取文件会暴露 RuntimeError 和不稳定的行为。Python 脚本与交互模式的行为不同的原因可能是什么。我正在使用 Pandas ==0.22.0 和 Python ==3.5.2 和表格==3.4.4

import pandas as pd
import tables

df=pd.read_csv("dummy.txt",header=None,error_bad_lines=False,warn_bad_lines=False,engine='c',sep="\t",encoding="latin-1",names=["product_name_id","current_product_name_id","product_n","active_f","create_d","create_user_n","change_d","change_user_n","ft_timestamp"])

df.to_hdf(path_or_buf="/home/avadhut/data_files/dummy_data.h5",key="dummy",mode="a",format="table")

df=pd.read_hdf("/home/avadhut/data_files/dummy_data.h5",key="dummy")
print(df.head(100))

最佳答案

在默认的 python 解释器上运行你的代码,看看错误是否仍然存在。这应该是 bpython 的一个错误,因为我无法在默认的 python 解释器上复制这个问题

关于python - 将制表符分隔的文本文件读入 Pandas 数据帧时出现 RunTimeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51635417/

相关文章:

用于查询 AD 并报告是否在 CSV 文件中找到 UPN 的 PowerShell 脚本

php - 使用 php 函数写入 csv 时,0 被截断

条件中的 Python 正则表达式匹配

python - Django 模型 : int() argument must be a string, 类似字节的对象或数字,而不是 'tuple'

python - 如何停止 Python 线程中的 for 循环?

python - 使用居中 .rolling() 后,用第一个计算总和替换 Pandas DataFrame 列中的 NaN 值

python - 在 Pandas 中写入文件的问题

python - `format()` 和 `str()` 之间有什么区别?

Python seaborn 与散点图和 Pandas 的错误

mysql - 如何将 CSV 导入到 phpMyAdmin?