【发布时间】:2016-07-12 13:37:52
【问题描述】:
我想将目标目录中的多个 CSV 文件(数百个文件,每个数百行,但列数相同)读取到单个 Python Pandas DataFrame 中。
我写的下面的代码可以运行,但是太慢了。运行 30 个文件需要几分钟(所以如果我加载所有文件,我应该等待多长时间)。我可以改变什么让它更快地工作?
此外,在replacefunction 中,我想将“_”(不知道编码,但不是正常的)替换为“-”(正常的 utf-8),我该怎么办那?我使用coding=latin-1因为我的文件中有法语口音。
#coding=latin-1
import pandas as pd
import glob
pd.set_option('expand_frame_repr', False)
path = r'D:\Python27\mypfe\data_test'
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list_ = []
for file_ in allFiles:
df = pd.read_csv(file_, index_col = None, header = 0, sep = ';', dayfirst = True,
parse_dates=['HeurePrevue','HeureDebutTrajet','HeureArriveeSurSite','HeureEffective'])
df.drop(labels=['aPaye','MethodePaiement','ArgentPercu'],axis=1,inplace=True)
df['Sens'].replace("\n", "-", inplace=True,regex=True)
list_.append(df)
print "fichier lu:",file_
frame = pd.concat(list_)
print frame
【问题讨论】:
-
你能在使用 Python 之前将所有文件连接在一起吗?这样只有一个文件被读取?另一种方法是将
zip文件放在一起,这将为您提供随机访问,但具有操作系统文件缓存的好处。 -
在接触 Python 之前,我真的不明白如何连接。要将所有文件制作成一个 csv 文件?而对于
zip,在哪一步? -
是的,制作一个大的 CSV 文件或制作一个
zip文件。这些与 Python 无关;您必须在 Python 外部执行此操作。一旦你有了一个包含所有数据的文件,然后让你的 Python 脚本直接读取该文件。 -
这听起来像是一个解决方案。但是如何自动做到这一点?以及如何制作
zip文件?我还是更喜欢在 python 里面做,因为我不知道到底要读多少个文件。
标签: python csv pandas encoding dataframe