我需要处理一些有关产品及其目标交货时间的日期(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)
有更快的计算方法吗?