将多个csv文件有效地读入熊猫数据框
问题描述:
我想读取3年的数据文件(每个日期一个),而且我感兴趣的部分通常很小(总计约140万行),与父代相比文件(每个约90MB和150万行)。以下代码在过去使用较少的文件对我来说非常有用。但是要处理1095个文件,它正在爬取(大约需要3-4秒才能读取一个文件)。任何建议使这个更高效/更快?将多个csv文件有效地读入熊猫数据框
import pandas as pd
from glob import glob
file_list = glob(r'C:\Temp2\dl*.csv')
for file in file_list:
print(file)
df = pd.read_csv(file, header=None)
df = df[[0,1,3,4,5]]
df2 = df[df[0].isin(det_list)]
if file_list[0]==file:
rawdf = df2
else:
rawdf = rawdf.append(df2)
答
IIUC,试试这个:
import pandas as pd
from glob import glob
file_list = glob(r'C:\Temp2\dl*.csv')
cols = [0,1,3,4,5]
df = pd.concat([pd.read_csv(f, header=None, usecols=cols)
.add_prefix('c')
.query("c0 in @det_list")
for f in file_list],
ignore_index=True)
+0
谢谢@MaxU。这段代码也提取我需要的数据。但它仍然需要30:24分钟。我为此运行计时。稍后将重新运行我的原始代码,并在问题中发布时间。 – ram
你可以指定'dtypes'列 – DJK
感谢,@ djk47463:最后的DF有4个整数和1个日期时间字段。这会提高阅读/处理速度吗? – ram