大型数据帧上的Pandas合并失败

时间:2015-10-28 10:23:50

标签: python csv pandas

我从Pandas 0.17.0开始,我无法理解如何使用pd.merge创建我的sql查询,我创建了一个小数据集,我的测试工作正常,但是对于大数据,行为是奇怪。

我的测试包含两个文件.csv,其中包含以下数据file1.csv

id,date,hour,phone_1,phone_2,amount
60000036,08/26/2015,00:17:14,3313268623,445466,1.048
60000036,08/31/2015,05:53:15,3313268623,443316260350,1.048

和我的file2.csv

id,date,hour,phone_1,phone_2
60000036,08/31/2015,05:53:12,3313268623,443316260350

我在ipython(4.0.0)

中运行以下命令
 left = pd.read_csv('file1.csv', low_memory=False)
 right = pd.read_csv('file2.csv', low_memory=False)
 result = pd.merge(left, right, on=['id', 'phone_1','date'], how='left')
# at this point, my output is correct
,id,date,hour_x,phone_1,phone_2_x,amount,hour_y,phone_2_y
0,60000036,08/26/2015,00:17:14,3313268623,445466,1.048,NaN,NaN
1,60000036,08/31/2015,05:53:15,3313268623,443316260350,1.048,05:53:12,443316260350

但是对于大数据,合并失败了我的输出使用大数据(两个文件,大约100mb):

,id,date,hour_x,phone_1,phone_2_x,amount,hour_y,phone_2_y
1313261,60000036,08/26/2015,00:17:14,523313268623,522666,0.048,
1571672,60000036,08/31/2015,05:53:15,523313268623,523316260800,0.048,

使用大文件时,合并始终将hour_yphone_2_y设置为NaN,但对于所有记录都不是。

在SQL中运行正常但速度太慢:

SELECT *
 from calls_a LEFT JOIN calls_b v ON
 v.id = t.id AND v.phone_a = t.phone_a AND v.date = t.date;

我无法弄清楚发生了什么。

0 个答案:

没有答案