所以我有以下内容:
timeDiffFunc = lambda x: x['CP_EX_DT'] - x['CP_EX_DT'].shift(1)
exTimeDiff = assetGrp.apply(timeDiffFunc).fillna(0).reset_index(level=1)
但这会占用大量内存,导致我的系统崩溃(类似于此处所见的问题:Memory leak in Pandas.groupby.apply()?)
我的问题是,如何将其转换为不使用apply函数的代码?我尝试了各种变体:
for i, (name,grp) in enumerate(assetGrp):
grp = grp['CP_EX_DT'] - grp['CP_EX_DT'].shift(1)
exTimeDiff = assetGrp.fillna(0).reset_index(level=1)
但在尝试将结果合并回数据框时总是收到类似NotImplementedError: Index._join_level on non-unique index is not implemented
的错误。
非常感谢任何建议。
答案 0 :(得分:0)
根据上面的Uvar评论,assetGrp.diff()做了同样的事情,内存开销要低得多。