【问题标题】:how to read mutliple csv files and store them in different dataframe?如何读取多个 csv 文件并将它们存储在不同的数据框中?
【发布时间】:2020-04-22 20:32:51
【问题描述】:

假设我有 200 个 csv 文件,我想一次读取这些 csv 文件,并将每个 csv 文件存储在不同的数据帧中,例如第一个文件的 df1 等等,直到 df200。像df1=pd.read_csv 这样手动操作需要花费很多时间,最多 200 次。我如何使用 pandas 来做到这一点?

我尝试过使用for循环,但无法接近,卡住了。

【问题讨论】:

标签: python pandas


【解决方案1】:
import pandas as pd
import glob

all_files = glob.glob("file_path" + "/*.csv")

dfs_dict = {}

for idx, filename in enumerate(all_files):
    df = pd.read_csv(filename, index_col=None, header=0)
    dfs_dict["df" + str(idx)] = df

【讨论】:

    【解决方案2】:

    试试这个:

    import pandas as pd
    import glob
    
    path = r'path of the folder where all csv exists' 
    all_files = glob.glob(path + "/*.csv")
    
    li = []
    
    for filename in all_files:
        df = pd.read_csv(filename, index_col=None, header=0)
        li.append(df)
    

    li 将拥有所有的 csv...您可以进一步预处理它们以将它们分成不同的文件,

    或者,如果所有 csv 具有相同的列并且您想将它们连接到单个数据帧,您可以使用 pandas 中的 concat 函数而不是 li 来返回单个数据帧。

    【讨论】:

      【解决方案3】:
      import pandas as pd
      import os
      
      dfs=[] #empty list of dataframes
      
      dirname = #where your files are
      
      for root,folders,files in os.walk(dirname):
          for file in files:
              fp = os.path.join(root,file)
              df=pd.read_csv(fp)
              dfs.append(df)
      
      df=pd.concat(dfs) 
      

      【讨论】:

      • 创建 DF 的临时列表不是最好的主意。您可以将生成器表达式传递给 concat,或者制作一个独立的生成器,如果它对于单个表达式来说太复杂的话。类似的东西:df = pd.concat((pd.read_csv(f) for f in files))
      猜你喜欢
      • 2015-09-10
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 2022-10-12
      • 1970-01-01
      • 2020-07-27
      • 2018-05-23
      • 1970-01-01
      相关资源
      最近更新 更多