Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
优化python脚本_Python_Pandas - Fatal编程技术网

优化python脚本

优化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

我正在尝试减少脚本的资源负担,或者只是寻找一个更简单的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   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')