[英]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.