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