【问题标题】:Trying to combine all csv files in directory into one csv file试图将目录中的所有 csv 文件合并为一个 csv 文件
【发布时间】:2021-08-22 14:46:40
【问题描述】:

我的目录结构如下:

>Pandas-Data-Science
   >Demo
   >SalesAnalysis
      >Sales_Data
         >Sales_April_2019.csv
         >Sales_August_2019.csv
         ....
         >Sales_December_2019.csv

所以Demo是我制作的一个新的python文件,我想从Sales_Data中取出所有的csv文件,并在Demo中创建一个csv文件。

我能够为来自Sales_Data 的任何特定 csv 文件制作一个 csv 文件

df = pd.read_csv('./SalesAnalysis/Sales_Data/Sales_August_2019.csv')

所以我想如果我只是获取文件名并遍历它,我可以将它全部连接到一个空的 csv 文件中:

import os
import pandas as pd
df = pd.DataFrame(list())
df.to_csv('one_file.csv')

files = [f for f in os.listdir('./SalesAnalysis/Sales_Data')]

for f in files:
   current = pd.read_csv("./SalesAnalysis/Sales_Data/"+f)

所以我的想法是 current 将创建一个单独的 csv 文件,因为 f 打印出所需的确切字符串,即。 Sales_August_2019.csv

但是,current 出现错误提示:No such file or directory: './SalesAnalysis/Sales_Data/Sales_April_2019.csv'

当我清楚地能够使用完全相同的字符串制作一个 csv 文件时。那么为什么我的代码不起作用?

【问题讨论】:

    标签: pandas file importerror


    【解决方案1】:

    您当前的工作目录可能不是您所期望的。我更喜欢使用绝对路径进行这些操作,这样更容易调试:

    from pathlib import Path
    
    path = Path('./SalesAnalysis/Sales_Data').resolve()
    current = [pd.read_csv(file) for file in path.glob('*.csv')]
    demo = pd.concat(current)
    

    你可以设置一个断点来找出path到底是什么。

    【讨论】:

      【解决方案2】:

      试试这个:

      import os
      import glob
      import pandas as pd
      os.path.expanduser("/mydir")
      
      extension = 'csv'
      all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
      
      #combine all files in the list
      combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
      #export to csv
      combined_csv.to_csv( "combined_csv.csv", index=False, encoding='utf-8-sig')
      

      【讨论】:

      • for os.chdir("mydir") 在“mydir”部分我写“./SalesAnalysis/Sales_Data”吗?
      • 是的,您存储要合并的 csv 文件的文件夹
      • FileNotFoundError: './SalesAnalysis/Sales_Data
      • 这可能是您路径上的错误。检查好你的文件夹结构路径
      • 不,当我执行 df=pd_read_csv("filepath") 之类的操作时它工作正常
      猜你喜欢
      • 1970-01-01
      • 2018-09-15
      • 2018-03-30
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多