将一个文件夹的多个csv文件加载到一个数据帧中

时间:2018-09-12 07:09:48

标签: python pandas csv dataframe glob

我在一个文件夹中以相同的列布局保存了多个csv文件,并希望将其作为pandas中的数据框加载到python中。

这个问题确实与此thread.

类似

我正在使用以下代码:

import glob
import pandas as pd
salesdata = pd.DataFrame()
for f in glob.glob("TransactionData\Promorelevant\*.csv"):
    appenddata = pd.read_csv(f, header=None, sep=";")
    salesdata = salesdata.append(appenddata,ignore_index=True)

使用其他软件包是否有更好的解决方案?

这要花很多时间。

谢谢

4 个答案:

答案 0 :(得分:2)

我建议对concat使用列表理解:

import glob
import pandas as pd

files = glob.glob("TransactionData\Promorelevant*.csv")
dfs = [pd.read_csv(f, header=None, sep=";") for f in files]

salesdata = pd.concat(dfs,ignore_index=True)

答案 1 :(得分:0)

link to actual answer的帮助下

这似乎是最好的班轮:

import glob, os    
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('', "*.csv"))))

答案 2 :(得分:0)

也许使用bash会更快:

number

想法是您不需要解析任何内容。

第一个命令复制其中一个文件的标题。如果没有标题,则可以跳过此行。尾巴跳过所有文件的标题并将其添加到csv中。

在python中添加可能会更昂贵。

当然,请使用熊猫确保解析仍然有效。

对您的基准感到好奇。

答案 3 :(得分:0)

我检查了所有这些方法,除了bash带有时间功能(只能运行一次,还要注意文件位于共享驱动器上)。

以下是结果:

我的方法:1220.49

列表comphrension + concat:1135.53

concat + map + join:1116.31

我将去参加comphrension + concat列表,这将为我节省一些时间,我感到非常熟悉。

感谢您的想法。