【问题标题】:Read in multiple csv into separate dataframes in Pandas将多个 csv 读入 Pandas 中的单独数据帧
【发布时间】:2019-03-19 16:25:30
【问题描述】:

我有一长串 csv 文件,我想将它们作为数据帧读取并以文件名命名。例如,我想读入文件 status.csv 并将其数据框命名为 status。有没有办法使用 Pandas 有效地做到这一点?

查看this,我仍然需要在循环中写下每个 csv 的名称。我想避免这种情况。

查看this,这使我可以将多个 csv 读入一个数据帧而不是多个数据帧。

【问题讨论】:

  • 可以使用os.listdir(".")获取当前目录下的所有csv,结合os.path.basename解析文件名。
  • 你愿意使用dask吗?您可以读取所有单独的数据帧并将它们包含在一个数据结构中,即一个 dask 数据帧,按其原始文件名进行分区。文档是here

标签: python pandas dataframe


【解决方案1】:

您可以使用os.listdir(dirname)列出一个目录下的所有csv,并结合os.path.basename解析文件名。

import os

# current directory csv files
csvs = [x for x in os.listdir('.') if x.endswith('.csv')]
# stats.csv -> stats
fns = [os.path.splitext(os.path.basename(x))[0] for x in csvs]

d = {}
for i in range(len(fns)):
    d[fns[i]] = pd.read_csv(csvs[i])

【讨论】:

    【解决方案2】:

    你可以创建一个DataFrames的字典:

    d = {}  # dictionary that will hold them 
    
    for file_name in list_of_csvs:  # loop over files
    
       # read csv into a dataframe and add it to dict with file_name as it key
       d[file_name] = pd.read_csv(file_name)
    
    
    

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 1970-01-01
      • 2011-07-16
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 2017-06-03
      • 1970-01-01
      相关资源
      最近更新 更多