熊猫cumsum使用大量的内存

时间:2014-05-21 21:14:16

标签: python memory pandas

我在pandas中使用cumsum来创建一个运行计数,它占用的内存比数据帧本身占用的内存多。我正在运行的功能如下:

def gen_obs_num(df):
    df.sort(columns=['Index', 'Date'], inplace=True)
    df['obs_num'] = 1
    df['obs_num'] = df.groupby(['Index', 'Date'])['obs_num'].cumsum()
    return df

有关如何以更节省内存的方式执行相同操作的任何想法吗?

基本上我想在以下格式的数据框中添加一列:

Index       Date
  A       1/1/2000
  A       1/2/2000
  A       1/2/2000
  B       1/1/2000
  B       1/1/2000
  B       1/10/2000

这样就变成了:

Index       Date      obs_num
  A       1/1/2000      1
  A       1/2/2000      1
  A       1/2/2000      2
  B       1/1/2000      1
  B       1/1/2000      2
  B       1/10/2000     1

1 个答案:

答案 0 :(得分:1)

帝斯曼的回答大大减少了内存使用量。重申一下,最好的方法是使用cumcount()代替:

df['obs_num'] = df.groupby(["Index", "Date"]).cumcount() + 1