我有100个XLS文件,我想将它们组合成一个CSV文件。有没有办法提高将它们组合在一起的速度?
使用concat的问题在于它缺少to_csv为我提供的参数:
listOfFiles = glob.glob(file_location)
frame = pd.DataFrame()
for idx, a_file in enumerate(listOfFiles):
print a_file
data = pd.read_excel(a_file, sheetname=0, skiprows=range(1,2), header=1)
frame = frame.append(data)
# Save to CSV..
print frame.info()
frame.to_csv(output_dir, index=False, encoding='utf-8', date_format="%Y-%m-%d")
答案 0 :(得分:2)
使用multiprocessing,您可以使用以下内容并行读取它们:
import multiprocessing
import pandas as pd
dfs = multiprocessing.Pool().map(df.read_excel, f_names)
然后将它们连接到一个:
df = pd.concat(dfs)
你可能应该检查第一部分是否比
更快dfs = map(df.read_excel, f_names)
YMMV - 它取决于文件,磁盘等。
答案 1 :(得分:1)
将它们读入列表然后调用public void doSomething(Object param){
.
.
.
JAXBElement<??????> jaxb = new JAXBElement<??????>
(new QName("uri","local"),?????.class, param);
.
.
.
}
会更高效:
concat
类似
merged = pd.concat(df_list)
重复附加到数据帧的问题是必须分配内存以适应新大小并复制内容,实际上您只需要执行一次。