使用 glob 读取多个 CSV 导致顺序错误 [重复]

Posted

技术标签:

【中文标题】使用 glob 读取多个 CSV 导致顺序错误 [重复]【英文标题】:Reading multiple CSVs using glob results in wrong order [duplicate] 【发布时间】:2021-04-24 03:23:36 【问题描述】:

我需要以正确的顺序读取多个 CSV 文件。这些文件以序列号命名,例如“file_0.csv”、“file_1.csv”、“file_2.csv”……,并以相同的顺序创建。

运行我的代码时,文件并没有按此顺序保存,而是完全混合在一起。 路径文件夹中没有其他文件。

path = "stored_files"
filenames = glob.iglob(path + "/*.csv")
dataframes = []

for filename in filenames:
    dataframes.append(pd.read_csv(filename))

【问题讨论】:

我通常为此使用natsort。 【参考方案1】:

AFAIK,glob 提供对文件夹的随机排序访问。你可以随时对filenames进行排序:

path = "stored_files"
filenames = glob.iglob(path + "/*.csv")
dataframes = []

for filename in sorted(filenames):
    dataframes.append(pd.read_csv(filename))

【讨论】:

【参考方案2】:

字符串排序不会按照您期望的方式对带有数字的字符串进行排序(特别是 10 在 2 之前)。因此,如果您知道您的文件名是什么样的,请循环遍历数字并将"foo"+str(i)+".csv" 或其他任何内容添加到您的文件列表中。

【讨论】:

以上是关于使用 glob 读取多个 CSV 导致顺序错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 glob 写入多个 csv

如何将多个 XML 文件解析为多个 CSV 文件?

使用 pyspark 读取多个 csv 文件

使用 Python 将多个 CSV 导入 HDF5

使用 pandas(和 glob?)合并目录中的大量(csv)数据文本文件

是否可以以相同或不同的顺序将具有相同标题或标题子集的多个 csv 文件读取到 spark 数据帧中?