繁体   English   中英

改进一行python脚本的时间

[英]Improving time on one line of python script

在上一个问题中,我询问了如何在一个步骤中保留某些观察结果: 将最后一组 obs 保留在具有相同(最近)日期的组中

给出的答案适用于该示例,但是当在具有 1500 万行且缩减为 400 万行的真实数据集上运行时,答案需要数小时才能运行,而我的笨重方法只需几秒钟即可运行。

比较笨重:

df['lastRptDt'] = df.groupby(['PrimaryID', 'SecondaryID'])['ReportDate'].transform(max)
df1 = df[(df['ReportDate']==df['lastRptDt'])]

...减慢一步回答:

df.reset_index()\
.set_index(['PrimaryID', 'SecondaryID', 'ReportDate'], drop=False)\
.loc[:,:,df.groupby(['PrimaryID', 'SecondaryID']).ReportDate.max()]\
.set_index('index')

我是否通过寻找一站式解决方案不必要地使事情复杂化?

您能否就为什么一步解决方案需要这么长时间提供任何直觉?

在第三行当你使用.loc[:: ...]时,这意味着对每一列和每一行处理一个groupby方法,然后多次聚合它和它午餐。

需要很长时间是正常的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM