关于我的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,然后出现内存错误。 我无法理解这个问题因为我有很多空闲记忆。
我在JupyterNotebook中运行代码。
答案 0 :(得分:0)
我无法找到任何可以帮助我一次处理所有数据的内容。
所以,将我的df切成 n 片段w.r.t到 ids ,每个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