Pandas - 获取Groupby对象的排名而不会耗尽内存

时间:2015-10-01 23:59:48

标签: python pandas

我有一个大型记录表,大约有400万行。我需要添加一个索引,根据orderID(升序)按电子邮件地址计算订单。

import pandas as pd
df = pd.read_csv('orders.csv', sep=";")

df.dtypes
orderId                  int64
transactionDate          object
revenue                 float64
email                    object
category                 object

rank = df2.groupby("email").orderId.rank(method='first')

当我尝试设置一个名为rank的变量时,程序运行了90分钟并占用了大约5.5 GB的RAM,但从未返回数据。我只是想添加一个列,以便每个电子邮件(我的customerID),我得到基于orderId的订单排名。因此,如果我有3个订单,我的第一个订单将具有最低订单ID等...每个电子邮件的等级重新启动。

感谢您的帮助。

杰夫

1 个答案:

答案 0 :(得分:1)

通常在大内存情况下,您可以对数据进行分块并按顺序运行每个块。这样做有很多很好的建议:

"Large data" work flows using pandas