如何使此for循环更快地处理大量数据?

时间:2019-01-09 19:42:26

标签: python pandas performance loops

我需要处理一些有关产品及其目标交货时间的日期(380,000行和20列)。每行都是产品,使用.merge可使目标交付时间更丰富。到目前为止,这并不是性能问题(约100秒)。 对于每个产品,我都知道其项目。现在,我需要为每个产品添加一列,其中包含有关项目中产品最高目标交付时间的信息。

在python 3上,我首先尝试了对索引的for循环。它可以工作,但是速度太慢(无法在15分钟内处理)。 然后我用grouby.apply尝试了一下。这也可以,但是速度更慢。

样本数据

import pandas as pd
import numpy as np

df = pd.DataFrame({'Product': ['A', 'B', 'C', 'D'],
               'Projectnumber': ['01', '02', '03', '01'],
               'target_time': [5,6,4,6]})
print(df)

第一次尝试

array=[]

for i in df.index:
    df1=df.loc[df['Projectnumber'] == df.Projectnumber[i],["target_time"]]
    target_time_liste = df1["target_time"].tolist()
    a = np.amax(target_time_liste)
    array.append(a)
df["PLT_target_adj_for"] = array
print(df)

第二次尝试

def timeadjust(x):
    x["target_time"]=x["target_time"].max()
    return x

df.groupby('Projectnumber').apply(timeadjust)

有更快的计算方法吗?

0 个答案:

没有答案