如何执行(太大)数据框的合并?

时间:2019-03-12 12:10:08

标签: python pandas numpy

我正在尝试合并HomeCredit Kaggle competion according to the data schema中的两个数据帧。 我做了以下事情:

train = pd.read_csv('~/Documents/HomeCredit/application_train.csv')
bureau = pd.read_csv('~/Documents/HomeCredit/bureau.csv')
bureau_balance = pd.read_csv('~/Documents/HomeCredit/bureau_balance.csv')

train = train.merge(bureau,how='outer',left_on=['SK_ID_CURR'],right_on=['SK_ID_CURR'])
train = train.merge(bureau_balance,how='inner',left_on=['SK_ID_BUREAU'],right_on=['SK_ID_BUREAU'])

失败于

  

MemoryError

第二次合并。 火车数据帧的形状为(308k,122),局(1.72M,12)和局余额(27.3M,3)。据我了解,train df的应用程序不必在burea表中有记录,但是该表中的所有行都应该在Bureau_balance中有记录。

我正在具有16GB RAM的本地实例上运行代码。

有没有办法解决这么大的数据集的内存问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

在遇到一定问题后,熊猫不是合适的工具。我将数据导入关系数据库中并发出SQL查询。 Sqlalchemy是用于处理数据库的一个不错的python工具。