我在一个文件夹中有5个csv文件,在这里我想将每个csv文件中的所有列连接到一个数据帧中。当我只加入2个csv文件时,它运行良好,但是当我想加入5个csv文件时,我遇到了一个错误。我的代码如下:
In [7]:
import pandas
import os
import numpy as np
import glob
path =r'D:/PreprocessingITRC/output/All/'
allFiles = glob.glob(path + "/*.csv")
dataframe = pandas.DataFrame()
for file in allFiles:
df = pandas.read_csv(os.path.join(file),index_col=0, header=0)
dataframe = dataframe.join(df, how='right')
dataframe
---------------------------------------------------------------------------
MemoryError Traceback (most recent call last)
答案 0 :(得分:1)
你的csv文件有一个unamed索引,其中所有的值都是0
,当合并这个时会导致重复匹配以指数方式爆炸,因为它找到了每个匹配组合:
bluetooth.csv:
,Bluetooth
0,9.0
0,21.0
0,14.0
GPS.cav:
,place,distance
0,3.0,15362.9633071
0,3.0,15813.7281014
0,1.0,15360.0862917
正如您在代码中指定的那样,此列应被视为索引,您的合并将变为iffy。
我指定此列不是索引,以便为您创建一个新列:
pandas.read_csv(os.path.join(file),index_col=None, header=0
修改强>
另外看看你正在做什么我认为你不需要合并,只需要concat
dfs列表:
path =r'D:/PreprocessingITRC/output/All/'
allFiles = glob.glob(path + "/*.csv")
dataframes = []
for file in allFiles:
df = pandas.read_csv(os.path.join(file), index_col=None, header=0)
df.drop('Unnamed: 0', axis=1, inplace=True)
dataframes.append(df)
merged = pd.concat(dataframes, axis=1)