python - 读取多个 csv 文件,将文件名列表连接到单个 DataFrame 中

标签 python csv pandas dataframe

我的目录中有多个 csv 文件,我会循环遍历 csv 文件,找到文件名列表,读取每个文件并将它们连接到一个数据框中。如果是单个的,只需读取其中的数据集即可。

以下是我的目录中的 csv 文件示例:

  • 2013_nba.csv
  • 2014_nba.csv
  • 2015_nba.csv
  • 2013_basketball.csv
  • 2014_basketball.csv
  • 2015_soccer.csv

这就是我到目前为止所拥有的。但这基本上会读取所有 csv 文件并将它们连接成一个 DF。我需要帮助如何循环查找字符串列表(csv)

path = 'C:\\Users\csvfiles\\'
csvFiles = glob.glob(path + "/*.csv")

list_ = []

for files in csvFiles:
     df = pd.read_csv(files, index_col=None, header=0)
     list_.append(df)

frame = pd.concat(list_, ignore_index=True)

我是Python新手,我尝试执行“for“nba”in files”来拉取所有名称中包含“nba”的csv文件,然后制作一个DF,但没有成功。

最佳答案

更新:

get_merged_csv()函数进行了一些改进,可以将参数传递给pd.read_csv():

import os
import glob
import pandas as pd

def get_merged_csv(flist, **kwargs):
    return pd.concat([pd.read_csv(f, **kwargs) for f in flist], ignore_index=True)

path = 'C:/Users/csvfiles'
fmask = os.path.join(path, '*nba*.csv')

df = get_merged_csv(glob.glob(fmask), index_col=None, usecols=['rank', 'name'])

print(df.head())

旧版本:

import os
import glob
import pandas as pd

path = 'C:/Users/csvfiles'
#fmask = '*.csv'

def get_merged_csv(path, fmask):
    return pd.concat([pd.read_csv(f, index_col=None, header=0)
                      for f in glob.glob(os.path.join(path, fmask))]
           )

df_list = [get_merged_csv(path, fmask)
           for fmask in ['*nba.csv', '*basketball.csv', '*soccer.csv']]

df_list 将具有三个 DF:df_list[0] - NBA、df_list[1] - 篮球、df_list[1 ] - 足球

或者您可以将它们放入字典中:

df_dict = {}
df_dict['nba'] = get_merged_csv(path, '*nba.csv')
df_dict['basketball'] = get_merged_csv(path, '*basketball.csv')
df_dict['soccer'] = get_merged_csv(path, '*soccer.csv')

一些解释:

get_merged_csv(path, fmask) 函数在列表理解循环中读取 CSV 文件,此 DF 列表将传递给 pd.concat() 函数将返回单个串联 DF

关于python - 读取多个 csv 文件,将文件名列表连接到单个 DataFrame 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973782/

相关文章:

python - 矩形缺角

python - 如何从 Python 中的 csv 列中减去/添加时间?

javascript - D3.js 连接多个 csv 文件中的数据

python - 使用python从文本文件中获取行的交集

python - 为数据框中的每个 ID 创建一个日期时间

python - 如何对pandas多级列进行设置和分组?

python - 如何从 Django 项目中删除南方

python - 为什么异常是可迭代的?

python - PyMySQL 是否支持 SELECT...FOR UPDATE?

parsing - Vb6:分隔制表符分隔的文本