优化python脚本
我正在尝试减少脚本的资源负担,或者只是寻找一个更简单的python代码来处理以下问题: 示例表(dataset.xlsx): 我想得到一个新的列,它可以复制每个订单的最大状态id优化python脚本,python,pandas,Python,Pandas,我正在尝试减少脚本的资源负担,或者只是寻找一个更简单的python代码来处理以下问题: 示例表(dataset.xlsx): 我想得到一个新的列,它可以复制每个订单的最大状态id df=dataset df.groupby('Status_id').max() df['Max'] = df.groupby('order')['Status_id'].transform('max') df 我得到: no order materials status Status_id Ma
df=dataset
df.groupby('Status_id').max()
df['Max'] = df.groupby('order')['Status_id'].transform('max')
df
我得到:
no order materials status Status_id Max
1 1000 100 available 1 3
2 1000 200 not available 3 3
3 1001 500 Feb-20 2 2
4 1002 400 available 1 3
5 1002 300 not available 3 3
6 1002 600 available 1 3
7 1002 900 available 1 3
8 1003 700 available 1 1
9 1003 800 available 1 1
虽然它看起来很简单,可以处理小数据集,但我的实际数据有80k+行数据,最多有80个状态ID,因此计算这些数据需要几个小时
有什么建议吗 您可以尝试先按
'Status\u id'
排序,然后从每组中选取最后一个值:
df = df.sort_values('Status_id')
df['Max'] = df.groupby('order')['Status_id'].transform('last')
对于大文件,我更喜欢使用Dask()。Dask将自动执行您的操作。它还提供了一个几乎与pandas相同的API,因此您会对它感到满意。您有一些测试吗?这应该很有趣,看看它是否更快。@jezrael否。也许你们可以测试它。为了改进答案,请免费使用来自
df = df.sort_values('Status_id')
df['Max'] = df.groupby('order')['Status_id'].transform('last')