我在一个文件夹中以相同的列布局保存了多个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)
使用其他软件包是否有更好的解决方案?
这要花很多时间。
谢谢
答案 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)
这似乎是最好的班轮:
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列表,这将为我节省一些时间,我感到非常熟悉。
感谢您的想法。