我有一个包含3个csv文件的文件夹:
a.csv
b.csv
c.csv
要阅读此文件夹中的所有csv并创建数据框,我目前正在执行此操作:
df1 = pd.read_csv('a.csv')
df2 = pd.read_csv('b.csv')
df3 = pd.read_csv('c.csv')
有没有办法自动命名数据帧(df1,df2和df3)并读取该文件夹中的所有csv文件。说,我有10个csv文件,我不想在pandas中手动编写10个读取语句。
例如,我不想写这个:
df1 = pd.read_csv('a.csv')
......
......
......
df10 = pd.read_csv('j.csv')
谢谢!
答案 0 :(得分:2)
如果您愿意访问数据帧列表而不是明确声明df1 ... dfn,则可以非常轻松地执行此操作:
root= "YOUR FOLDER"
csvs= [] #container for the various csvs contained in the directory
dfs = [] #container for temporary dataframes
# collect csv filenames and paths
for dirpath, dirnames, filenames in os.walk(root):
for file in filenames:
csvs.append(dirpath + '\\' + file)
# store each dataframe in the list
for f in csvs:
dfs.append(pd.read_csv(f))
然后访问dfs[0] ... dfs[n]
答案 1 :(得分:1)
您可以创建DataFrames字典:
import os
import pandas as pd
from glob import glob
dfs = {os.path.splitext(os.path.basename(f))[0]: pd.read_csv(f) for f in glob('*.csv')}
# df1 equivalent dfs['a']
dfs['a']
答案 2 :(得分:0)
因为我要求您使用global
个变量,所以人们可能会推翻此解决方案。但是,这解决了你的问题。
dir= 'myDir'
for root, dirs, filenames in os.walk(dir):
for a, f in enumerate(filenames):
fullpath = os.path.join(dir, f)
globals()['df%s' % str(a+1)] = pd.read_csv(fullpath)