简单的for循环合并系列到数据帧的内存错误

时间:2019-01-10 22:29:18

标签: python pandas

我编写了一个函数来对多列进行滚动求和,然后将新的滚动求和序列作为列添加到原始数据帧上。很简单。

def rolling_sum(df, columns, w=3):

'''insert rolling sum for each column in list of columns for window (w) in months. '''

    for column in columns:

        print column + 'sum'+ str(3)

        df.index = df.date
        series = df.groupby(['pixel']).rolling(w)[column].sum() # no year. so rolls over dec-jan
        series = series.reset_index(level=[0,1])
        series.rename(index=str, columns={column: column + 'sum' + str(w)}, inplace=True)
        #df = df.merge(series, on=['pixel','date']) # unnecessary
        df = df.merge(series)

        print 'successful merge'

    return df

'lo'n看到它可以用于一个数据帧(1 GB),并且可以在另一个数据帧上工作(它们合并在完全相同的列上-对象'date'[2012-06]和float64'像素” [1000.1])。

半失败的情况似乎在第二列或第三列之后大量消耗了RAM。好像它以某种方式存储了一堆不必要的内存。此df仅为100 MB,我尝试将其缩减为10 MB,但它仍然执行相同的操作,但使其达到第四列左右。

关于如何解决此问题的任何想法?

0 个答案:

没有答案