使用 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 导致顺序错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章