我的目录中有多个 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/