我正在尝试从由productId和customerId索引的数据框中提取信息。我有成千上万的(productId,customerId)对,并且有兴趣寻找最有效的方法来实现此目的。
我有两个数据框,df1包含我感兴趣的customerId和productId对,第二个数据框df2包含由customerId,productId对索引的感兴趣信息。
到目前为止,我已经尝试过类似的事情:
def f(x, y):
return(df2.col[(df2.customerId == x) & (df2.productId == y)].sum())
values = df1.apply(lambda x: f(x.customerId, x.productId), axis = 1)
工作正常,但速度很慢。
有什么改进建议吗?
答案 0 :(得分:0)
您可以尝试理解列表:
values = [df2.loc[df2[['customerId', 'productId']].eq(i).all(), 'col'].sum() for i in df1.values]