Pandas透视表内存错误,可用的内存很多

问题描述 投票:2回答:1

关于我的df的信息:

RangeIndex: 14151145 entries, 0 to 14151144
Data columns (total 4 columns):
id    object
idf   object
ch    object
hr    uint8
dtypes: object(3), uint8(1)
memory usage: 337.4+ MB

我的系统有120GB内存,当我运行时:

dfp = df.pivot_table(index='id', columns=['idf','ch'],aggfunc='count')

我的结果数据透视表将有10800列。

我的内存消耗大约为35 GB,然后出现内存错误。因为我有很多空闲记忆,所以我无法理解这个问题。

我在Jupyter Notebook中运行代码。

pandas pivot-table
1个回答
0
投票

我找不到任何可以帮助我一次处理所有数据的东西。

因此,将我的df切成n个片段w.r.t到id,每个id可以有多个样本。

def partition(lst, n):
    division = len(lst) / float(n)
    return [ lst[int(round(division * i)): int(round(division * (i + 
    1)))] for i in range(n) ]

chunks_df = pd.DataFrame()

ids = dt_m['id'].unique()
part_ids=partition(ids,5)

i=0
gc.collect()
for lst in part_ids:
     chunks_df=chunks_df.append(dt_m[dt_m['id'].isin(lst)].PIVOT_OPERATION())

     print("{} batch done".format(i))
     i=i+1 
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.