gpt4 book ai didi

Python Pandas Dataframe - 优化在另一个 Dataframe 中搜索 id

转载 作者:行者123 更新时间:2023-12-02 02:35:25 25 4
gpt4 key购买 nike

给出以下场景。

我有 2 个数据框,分别称为订单和客户。

我想查看 OrderDataFrame 中的 CustomerID 在 Customer Dataframe 的 LinkedCustomer 列中的位置。 LinkedCustomers 字段是一个 CustomerId 数组。

订单数据框包含大约 5,800,000 个项目。客户数据框包含大约 180 000 个项目。

我正在寻找一种方法来优化以下代码,因为该代码运行但非常慢。我怎样才能加快速度?


# demo data -- In the real scenario this data was read from csv-/json files.
orders = pd.DataFrame({'custId': [1, 2, 3, 4], 'orderId': [2,3,4,5]})
customers = pd.DataFrame({'id':[5,6,7], 'linkedCustomers': [{1,2}, {4,5,6}, {3, 7, 8, 9}]})


def getMergeCustomerID(row):
customerOrderId = row['custId']
searchMasterCustomer = customers[customers['linkedCustomers'].str.contains(str(customerOrderId))]
searchMasterCustomer = searchMasterCustomer['id']
if len(searchMasterCustomer) > 0:
return searchMasterCustomer
else:
return customerOrderId

orders['newId'] = orders.apply(lambda x: getMergeCustomerID(x), axis=1)


# expected result
custId orderId newId
1 2 5
2 3 5
3 4 7
4 5 6

最佳答案

我认为在某些情况下这种方法可以解决您的问题:首先建立一个字典,

myDict = {}
for i,j in customers.iterrows():
for j2 in j[1]:
myDict[j2]=j[0]

然后使用字典创建新列:

orders['newId'] = [myDict[i] for i in orders['custId']]

IMO 尽管这可以解决您的问题(加速您的程序),但这不是最通用的解决方案。欢迎更好的答案!

关于Python Pandas Dataframe - 优化在另一个 Dataframe 中搜索 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59875186/

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