我有一个大型数据集(以百万为单位的行数),我将其读入名为datafile的 pandas DataFrame中。
每行都有一个订单 ID 号 - 这不是唯一的。所以我的数据文件看起来像这样
Price Qty OrderId
26690 3000 1213772
26700 3000 1215673
26705 6000 1216656
26700 3000 1213772
26710 3000 1215673
现在,我想要的是,对于每一行 - 获取 OrderID,在 DataFrame 中找到该 OrderID 的先前出现并获取相应的价格,并将其填充到新列“Prev_Price”中。如果没有找到以前的匹配项,则将值保持为 0。所以我的输出应该如下所示
Price Qty OrderId Prev_Price
26690 3000 1213772 0
26700 3000 1215673 0
26705 6000 1216656 0
26700 3000 1213772 26690
26710 3000 1215673 26700
我尝试使用 numpy 并编写了这个函数
def getPrevPrice_np(x):
try:
return list(datanp[np.where(datanp[0:x,2]==datanp[x,2])][:,0])[-1]
except:
return 0
我这样申请
datanp = datafile.values
datafile['Prev_Price'] = pd.Series(datafile.index).apply(getPrevPrice_np)
但是对于我的要求来说它仍然很慢 - 实现这个的最快方法是什么?
达令说
相关分类