0

我正在使用 Twint 创建一个包含十个结果的 .csv 文件。但是,每当我尝试将其加载到 pandas 数据框中时,都会出现错误。有人可以帮助我了解发生了什么吗?

Traceback (most recent call last):
  File "k:\Documents\Visual Studio Code\Twitter Project\exploratory stage.py", line 4, in <module>
    scrapedData = pd.read_csv('demo.csv')
  File "K:\Programs\Python\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "K:\Programs\Python\lib\site-packages\pandas\io\parsers\readers.py", line 586, in 
read_csv
    return _read(filepath_or_buffer, kwds)
  File "K:\Programs\Python\lib\site-packages\pandas\io\parsers\readers.py", line 488, in 
_read
    return parser.read(nrows)
  File "K:\Programs\Python\lib\site-packages\pandas\io\parsers\readers.py", line 1047, in read
    index, columns, col_dict = self._engine.read(nrows)
  File "K:\Programs\Python\lib\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 223, in read
    chunks = self._reader.read_low_memory(nrows)
  File "pandas\_libs\parsers.pyx", line 801, in pandas._libs.parsers.TextReader.read_low_memory
  File "pandas\_libs\parsers.pyx", line 857, in pandas._libs.parsers.TextReader._read_rows
  File "pandas\_libs\parsers.pyx", line 843, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas\_libs\parsers.pyx", line 1925, in pandas._libs.parsers.raise_parser_error 
pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 3, saw 3

-编辑-

我查看了我的 csv 文件,发现数据的格式很奇怪。包括用户名、日期时间和推文在内的一整行信息都将被塞进一个单元格中。

对于其他几行,推文会中断并继续在它旁边的单元格中。它看起来像这样。

我的数据截图

4

2 回答 2

1

每当您提出pandas问题时,如果可能,您应该始终提供几行数据,以便人们可以更有效地帮助您。

该错误表明您的第三行包含 3 个字段,它只需要 1 个字段。

如果您的 CSV 格式不正确,就会发生这种情况。在您的情况下,解决方案是修复格式或尝试设置error_bad_lines=False

此示例引发相同的错误:

from io import StringIO
import pandas as pd

data = """name
brad
susi,tina,ellen
peter
"""

pd.read_csv(StringIO(data))

输出:

ParserError: Error tokenizing data. C error: Expected 1 fields in line 3, saw 3

解决方案

修复 CSV 文件或尝试设置error_bad_lines=False将跳过错误行

df = pd.read_csv(StringIO(data), error_bad_lines=False)
print(df)

输出:

注意缺少的行susi,tina,ellen

    name
0   brad
1  peter

  exec(code_obj, self.user_global_ns, self.user_ns)
b'Skipping line 3: expected 1 fields, saw 3\n'
于 2021-10-14T09:13:44.770 回答
-1

当 csv 被另一个程序或应用程序占用时,操作系统可能会“锁定”文件,直到操作完成。

确保在您创建一个 .csv 时告诉操作系统克隆/结束操作

这是打开/关闭文件的示例:

f.open(test.csv, "w")
f.write("test")
f.close()

没有 f.close 文件被操作系统“锁定”并且不能被另一个程序/进程访问

于 2021-10-14T09:06:06.223 回答