我正在处理一个大约有20,000,000行和4列的大型数据集。不幸的是,我的机器上的可用内存(~16 on )不够。
示例(时间是从午夜开始的秒数):
Date Time Price Vol
0 20010102 34222 51.750 227900
1 20010102 34234 51.750 5600
2 20010102 34236 51.875 14400
然后,我将数据集转换为适当的时间序列对象:
Date Time Price Vol
2001-01-02 09:30:22 20010102 34222 51.750 227900
2001-01-02 09:30:34 20010102 34234 51.750 5600
2001-01-02 09:30:36 20010102 34236 51.875 14400
2001-01-02 09:31:03 20010102 34263 51.750 2200
为了释放内存,我想删除多余的Date和Time列。我使用.drop()
方法执行此操作,但内存未被释放。之后我也试着给gc.collect()
打电话,但也没什么帮助。
这是我调用来处理所描述的操作的代码。del
部件释放内存,但不释放drop
部件。
# Store date and time components
m, s = divmod(data.Time.values, 60)
h, m = divmod(m, 60)
s, m, h = pd.Series(np.char.mod('%02d', s)), pd.Series(np.char.mod('%02d', m)), pd.Series(np.char.mod('%02d', h))
# Set time series index
data = data.set_index(pd.to_datetime(data.Date.reset_index(drop=True).apply(str) + h + m + s, format='%Y%m%d%H%M%S'))
# Remove redundant information
del s, m, h
data.drop('Date', axis=1, inplace=True)
data.drop('Time', axis=1, inplace=True)
如何从pandas数据帧中释放内存?
发布于 2019-09-26 09:55:33
del data['Date']
del data['Time']
这将释放内存。
https://stackoverflow.com/questions/31491655
复制