【问题标题】:Python Pandas not importing .csv. Error: pandas.errors.EmptyDataError: No columns to parse from filePython Pandas 不导入 .csv。错误:pandas.errors.EmptyDataError:没有要从文件中解析的列
【发布时间】:2022-11-03 13:19:56
【问题描述】:

我正在将信息写入 2 个 .csv 文件(2 列,以逗号分隔)。我已经使用 time.sleep() 确保我的桌面有足够的时间在 pandas 尝试将信息加载到数据帧之前将所有数据写入文件。似乎问题仍然存在于archorg.csv,因为我尝试颠倒导入文件的顺序并且pacman.csv 没有给出错误,但archorg.csv 仍然存在。

    onlinedf = pd.read_csv('/home/kia/Code/update/data/archorg.csv')
    pacmandf = pd.read_csv('/home/kia/Code/update/data/pacman.csv')

当我尝试运行它时,我收到以下错误:

Traceback (most recent call last):
  File "/home/kia/Code/update/main.py", line 28, in <module>
    ugh = main()
  File "/home/kia/Code/update/main.py", line 20, in __init__
    filemgr.loadfiles()
  File "/home/kia/Code/update/files.py", line 10, in loadfiles
    onlinedf = pd.read_csv('/home/kia/Code/update/data/archorg.csv')
  File "/usr/lib/python3.10/site-packages/pandas/util/_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "/usr/lib/python3.10/site-packages/pandas/io/parsers/readers.py", line 680, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "/usr/lib/python3.10/site-packages/pandas/io/parsers/readers.py", line 575, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "/usr/lib/python3.10/site-packages/pandas/io/parsers/readers.py", line 934, in __init__
    self._engine = self._make_engine(f, self.engine)
  File "/usr/lib/python3.10/site-packages/pandas/io/parsers/readers.py", line 1236, in _make_engine
    return mapping[engine](f, **self.options)
  File "/usr/lib/python3.10/site-packages/pandas/io/parsers/c_parser_wrapper.py", line 75, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas/_libs/parsers.pyx", line 551, in pandas._libs.parsers.TextReader.__cinit__
pandas.errors.EmptyDataError: No columns to parse from file

最后,我去解释器,逐行输入以下内容:

>>> import pandas as pd
>>> pd.read_csv('/home/kia/Code/update/data/archorg.csv')
                  package     version
0          python-dulwich   0.20.45-1
1              sqlite-tcl    3.39.1-1
2              sqlite-doc    3.39.1-1
3         sqlite-analyzer    3.39.1-1
4                  sqlite    3.39.1-1
..                    ...         ...
223     python-voluptuous    0.13.1-1
224     python-tldextract     3.3.1-1
225    perl-file-mimeinfo      0.33-1
226  perl-crypt-passwdmd5      1.42-1
227      perl-test-simple  1.302191-1

[228 rows x 2 columns]

它似乎可以毫无问题地完成工作。我还在下面发布了部分 csv 文件,以防出现问题,尽管我已经检查了它是否有额外的逗号/空格/等。

package,version
python-dulwich,0.20.45-1
sqlite-tcl,3.39.1-1
sqlite-doc,3.39.1-1
sqlite-analyzer,3.39.1-1
sqlite,3.39.1-1
lemon,3.39.1-1
tp_smapi-lts,0.43-254
r8168-lts,8.050.03-9
acpi_call-lts,1.2.2-58
nvidia-lts,1:515.57-6
linux-lts-headers,5.15.55-1
linux-lts-docs,5.15.55-1
linux-lts,5.15.55-1
mattermost,7.1.1-1
node-gyp,9.1.0-1
trivy,0.30.0-1
sile,0.13.3-1

编辑:repo 添加完整审核。

编辑 2:使用 sep= 而不是 delim_whitespace 使其工作,然后使用 csv 模块而不是字符串连接写入文件,以消除 csv 格式错误的任何可能性。存储库中显示的所有文件以供参考。

【问题讨论】:

  • 你能添加一个代码sn-p你如何生成和保存它吗?
  • @RodrigoLaguna 已将 github 存储库添加到我的帖子中。
  • 你能只包括写入数据和使用延迟问题的部分吗?

标签: python pandas dataframe csv


【解决方案1】:

您的 csv 样本对我来说效果很好,令人费解的是您的其他文件效果很好。 我建议您尝试解决方法,我希望它有效

import pandas as pd
df = pd.read_csv("filepath", delim_whitespace=True)
df[['Package', 'Version']] = df['package,version'].str.split(',', expand=True)
df.drop(columns = "package,version", inplace=True)

【讨论】:

  • 好的,所以我逐行尝试了您的解决方案。添加 delim_whitespace=True 选项使其工作,而其他行给出了有关未找到轴的错误。然而此时,当我可以成功输出我的数据帧(pacmandf 和 onlinedf)时,似乎我丢失了一些数据(即我有 1181 行数据,而数据帧只重复输出 845)。使用解释器或独立脚本输出 csv 文件向我显示了完整的数据,但我的项目中的相同内容不起作用。 github.com/itsKia2/pacman-update-checker 进行全面审查。
猜你喜欢
  • 2018-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-13
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多