Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按创建日期的顺序合并csv文件_Python_Pandas_Csv_Sequence - Fatal编程技术网

Python 按创建日期的顺序合并csv文件

Python 按创建日期的顺序合并csv文件,python,pandas,csv,sequence,Python,Pandas,Csv,Sequence,我正在合并3700个csv文件,总共有1000万行。这些文件没有顺序命名,但创建它们的日期(降序)是顺序的。我使用下面的代码来合并它们,但不知道如何按顺序添加和拾取它们 将熊猫作为pd导入 导入glob path=r'C:\Users\User\'#path 所有_文件=glob.glob(路径+“/*.csv”) li=[] 对于所有_文件中的文件名: df=pd.read\u csv(文件名,索引列=None,头=0) li.追加(df) frame=pd.concat(li,axis=0

我正在合并3700个csv文件,总共有1000万行。这些文件没有顺序命名,但创建它们的日期(降序)是顺序的。我使用下面的代码来合并它们,但不知道如何按顺序添加和拾取它们

将熊猫作为pd导入
导入glob
path=r'C:\Users\User\'#path
所有_文件=glob.glob(路径+“/*.csv”)
li=[]
对于所有_文件中的文件名:
df=pd.read\u csv(文件名,索引列=None,头=0)
li.追加(df)

frame=pd.concat(li,axis=0,ignore_index=True)
如果我正确理解了这个问题,您需要在循环之前使用它(基于答案),它在Python 3中按创建/修改日期对文件列表进行排序:

import os
all_files = sorted(all_files, key=os.path.getmtime)
#all_files = sorted(all_files, key=os.path.getctime) #works too
在MacOs上测试:

  • 我创建了5个类似于OP的文件:

  • 使用
    glob
    读取文件

  • 根据修改时间对文件进行排序:

我相信
glob
使用了
os
的默认列表,所以不能保证顺序。您可能需要手动对所有文件进行排序。如果您想按文件名排序,请提供一个文件名示例。@EliadL我不需要按文件名排序,但需要按创建(修改)的日期排序,但我提供的名称只是为了更好地衡量我的缺点,我以为日期已经包含在文件名中了。对编码来说还是新鲜事。谢谢你的更新。自从我使用Windows后,原来的版本就不起作用了。更新的一个有效。谢谢。很高兴它对你有用。如果答案有帮助,请勾选/接受。谢谢你的接受。仅供参考,根据我的测试,适用于您的解决方案适用于MacOS。感谢您提供的信息。只是一个简单的问题,为什么我不能使用熊猫读取移动的csv文件?例如,假设我下载一个文件V100.csv并读取它,而不使用
df=pd.read\u csv('V100.csv')
移动它,然后将它与文档一起移动到一个新文件夹中,以便
df=pd.read\u csv('V100.csv')
?是的,谢谢
pandas.read\u csv(filepath\u或缓冲区,delim\u whitespace=True)
工作正常。你真的知道你的东西
import glob
all_files = glob.glob('V*.csv')
print(all_files)
#['V100-778.csv', 'V100-778-.csv', 'V100-1005-1.csv', 'V100-1.csv', 'V100-2.csv']
import os
all_files = sorted(all_files, key=os.path.getmtime)
print(all_files)
#['V100-778-.csv', 'V100-1005-1.csv', 'V100-1.csv', 'V100-778.csv', 'V100-2.csv']