【问题标题】:Pandas returns empty dataframe when loading multiple .csv filesPandas 在加载多个 .csv 文件时返回空数据框
【发布时间】:2021-12-07 02:14:29
【问题描述】:

我完全不明白为什么这不起作用,因为我没有收到错误消息。

我一直在尝试将一个文件夹中的多个 .csv 文件(所有文件的格式都与从 PubMed API 收集的相同)加载到单个数据帧中。

这是我的代码:

path = "~/Desktop/PubMed/Corpus"

files = glob.glob(path + "/*.csv")
dfs = [pd.read_csv(f, header=None) for f in files]
print(dfs)

这只是返回:

[]

之后,我测试了是否可以加载单个文件,并且可以!

感谢任何帮助解决这个问题。

【问题讨论】:

  • 什么返回print (files)
  • @jezrael 相同的 [] - 可以是 glob 吗?
  • import os;print(os.path.exists("~/Desktop/PubMed/Corpus"))的输出是什么
  • @Daweo 输出为 False - 但是当我可以加载单个文件时这有什么意义?
  • @msa 你用的是什么操作系统?

标签: python python-3.x pandas dataframe csv


【解决方案1】:

最新的 mac 版本

我不确定,因为我没有处理它,但我怀疑问题可能是由使用 ~ as 引起的

与 unix shell 不同,Python 不进行任何自动路径扩展。

请尝试使用 os.path.expanduser 来处理它,即替换

path = "~/Desktop/PubMed/Corpus"

使用

import os
path = os.path.expanduser("~/Desktop/PubMed/Corpus")

【讨论】:

  • 感谢您的成功!你能解释一下为什么我的版本不起作用吗? :-)
【解决方案2】:

不确定glob 可能有什么问题,但我建议使用os.listdir 作为解决方法,然后检查您的列表理解是否f 具有正确的扩展名:

files = os.listdir(path)
dfs = [pd.read_csv(f, header=None) for f in files if f.split('.')[-1] == 'csv']

【讨论】:

  • 由于某种原因,这会返回一个找不到路径的错误。
猜你喜欢
  • 1970-01-01
  • 2018-05-05
  • 2017-06-03
  • 2021-05-29
  • 2021-08-23
  • 2021-10-20
  • 1970-01-01
  • 2020-09-03
  • 2021-10-01
相关资源
最近更新 更多