Python 数据帧上的优化迭代

Python 数据帧上的优化迭代,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我正在创建一个字典(命名数据),使用两列数据框(命名为sales_product),使用“sales Ord Id”(列名)作为键,然后插入匹配的“Prod Id”(列名) 到字典中匹配的键列表。 但是这个程序需要将近6个小时才能执行,所以有人能提出任何方法来加快这个过程吗 ID = [] #ID list items = [] data = {} for i in range(len(sales_product)): curr_id = sales_produc

我正在创建一个字典(命名数据),使用两列数据框(命名为sales_product),使用“sales Ord Id”(列名)作为键,然后插入匹配的“Prod Id”(列名) 到字典中匹配的键列表。 但是这个程序需要将近6个小时才能执行,所以有人能提出任何方法来加快这个过程吗

ID = []             #ID list
items = []
data = {}
for i in range(len(sales_product)):
    curr_id = sales_product['Sales Ord Id'][i] 
    if curr_id not in ID:
        ID.append(curr_id)
        data[curr_id]=[]
        data[curr_id].append(sales_product['Prod ID'][i])
    else:   
        if sales_product['Prod ID'][i] not in data[curr_id]:
            data[curr_id].append(sales_product['Prod ID'][i])

你应该试着用熊猫。它按列值对数据帧的数据进行分组,并允许您使用这些组。它应该工作得更快

import pandas as pd

sales_product = pd.DataFrame({'Sales Ord Id': [1, 2, 1, 2, 1, 2, 1, 2, 1, 2],
                              'Prod ID': [11, 12, 13, 14, 15, 16, 17, 18, 19, 10]})

groupby = sales_product.groupby('Sales Ord Id')
data = dict([(x, list(d['Prod ID'])) for x, d in groupby])
print(data)
# prints {1: [11, 13, 15, 17, 19], 2: [12, 14, 16, 18, 10]}

我建议您使用所需的数据创建一个“辅助”数据框,然后使用dataframe.to_dict()方法,这是因为使用dataframe函数操作通常比直接操作更有效,特别是如果您使用矢量化,但这里的问题是我必须使用“Sales Ord Id”作为键,但它在我的数据框中不是唯一的。我必须制作一个字典来存储“Prod ID”列表,其中匹配的“Sales Ord ID”作为键。