我想从目录中读取几个CSV文件到熊猫,并将它们连接到一个大的DataFrame。不过我还没弄明白。以下是我目前所掌握的:
import glob
import pandas as pd
# Get data file names
path = r'C:\DRO\DCL_rawdata_files'
filenames = glob.glob(path + "/*.csv")
dfs = []
for filename in filenames:
dfs.append(pd.read_csv(filename))
# Concatenate all data into one DataFrame
big_frame = pd.concat(dfs, ignore_index=True)
我想我在for循环中需要一些帮助?
这里几乎所有的答案要么是不必要的复杂(glob模式匹配),要么依赖于额外的第三方库。您可以在两行中使用Pandas和Python(所有版本)已经内置的所有内容来完成此操作。
对于一些文件-一行程序
df = pd.concat(map(pd.read_csv, ['d1.csv', 'd2.csv','d3.csv']))
对于许多文件
import os
filepaths = [f for f in os.listdir(".") if f.endswith('.csv')]
df = pd.concat(map(pd.read_csv, filepaths))
对于无头文件
如果你想用pd改变一些特定的东西。Read_csv(即,没有头),你可以创建一个单独的函数,并调用你的地图:
def f(i):
return pd.read_csv(i, header=None)
df = pd.concat(map(f, filepaths))
这条pandas行,它设置了df,利用了三个东西:
Python的map (function, iterable)发送给函数(the
pd.read_csv())迭代对象(我们的列表),它是每个CSV元素
在filepaths)。
Panda的read_csv()函数正常读取每个CSV文件。
Panda的concat()将所有这些都放在一个df变量下。