我有大约30 GB的数据(在大约900个数据帧的列表中),我试图连接在一起.我正在使用的机器是一个中等功能的Linux Box,大约256 GB的内存.但是,当我尝试连接我的文件时,我很快用完了可用的ram.我已经尝试了各种解决方法来解决这个问题(在较小批量中与for循环连接等)但我仍然无法将这些连接起来.两个问题浮现在脑海中:
还有其他人处理过此问题并找到了有效的解决方法吗?因为我需要的"列合并"(由于缺乏一个更好的词)的功能,我不能使用直追加join='outer'的说法pd.concat().
为什么Pandas连接(我知道它只是调用numpy.concatenate)因使用内存而效率低下?
我还应该注意到,我不认为问题是列的爆炸,因为将100个数据帧连接在一起会产生大约3000列,而基础数据帧大约为1000.
我正在使用的数据是我的900个数据帧中的每一个大约1000列宽和大约50,000行深度的财务数据.从左到右的数据类型是:
stringnp.floatint......等等重复.我串连对列名的与外连接,这意味着在任何列df2不在df1不会被丢弃,而是分流到一边.
#example code
data=pd.concat(datalist4, join="outer", axis=0, ignore_index=True)
#two example dataframes (about 90% of the column names should be in common
#between the two dataframes, the unnamed columns, etc are not a significant
#number of the columns)
print datalist4[0].head()
800_1 800_2 800_3 800_4 900_1 900_2 0 2014-08-06 09:00:00 BEST_BID 1117.1 103 2014-08-06 09:00:00 BEST_BID
1 2014-08-06 09:00:00 …Run Code Online (Sandbox Code Playgroud)