gpt4 book ai didi

python - 两个数据帧的硬匹配,无需迭代

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:45 25 4
gpt4 key购买 nike

我有以下独特汽车的数据框 (df_inventory),大约有 3000 行:

    stock_id  car_brand   car_model     age_group      mileage_group
AS12354 Mazda CX-7 6-10 50-100k
DX22234 Toyota Verso 11> 150k>
KL32423 Volkswagen Touran 11> 150k>
SU12121 Renault Twingo 6-10 50-100k
... ... ... ... ...

然后我有以下(唯一)汽车的数据框 (df_main),大约有 100000 行:

    clientID  car_brand   car_model     age_group      mileage_group
23132 Volkswagen Golf 6-10 50-100k
24234 Renault Twingo 11> 150k>
19055 Volkswagen Polo 11> 150k>
23245 Renault Clio 1-2 0-50k
... ... ... ... ...

我想最后得到的是一个有两列的数据框。第一个是 clientID,第二个是 Stock_id 如果所有其他列(car_brand、car_model、age_group、mileage_group)都存在硬匹配。

这可以使用两个 for 循环来实现,迭代 stock_id 和 clientID 之间的每个组合。但这会导致 3000*100000 次迭代,并且需要很多时间:

clientID=[]
stock_id=[]

for i in range(df_main.shape[0]):
for j in range(df_inventory.shape[0]):

if (df_main.iloc[i,1]==df_inventory.iloc[j,1]
and df_main.iloc[i,2]==df_inventory.iloc[j,2]
and df_main.iloc[i,3]==df_inventory.iloc[j,3]
and df_main.iloc[i,4]==df_inventory.iloc[j,4] ):

clientID.append(df_main.iloc[i,0])
stock_id.append(df_inventory.iloc[j,0])

是否有任何Pythonic方式(列表理解)可以使这个过程更快?

最佳答案

非常感谢,最终变得非常简单:

merged = df_main.merge(df_inventory, how='inner', on=['car_brand', 
'car_main_type','car_age_years_group','mileage_group'])

关于python - 两个数据帧的硬匹配,无需迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com