我有一个(巨大的)数据框,其中包含三列,第三列具有python列表作为元素,并且我想创建一个字典,将这些列表的每个元素e
映射到一个列表(或一组) )由前两列的元素组成的元组,其中出现e
。在代码中:
from collections import defaultdict
from operator import attrgetter
import pandas as pd
seg_to_path = defaultdict(list)
df = pd.DataFrame([[1, 2, [7, 8, 9]], [3, 4, [10, 7, 12]]],
columns=['a', 'b', 'list_'])
print(df)
atrrs = attrgetter('a', 'b')
for row in df.itertuples(index=False):
ab = atrrs(row)
for s in row.list_:
seg_to_path[s].append(ab)
print(seg_to_path)
打印
a b list_
0 1 2 [7, 8, 9]
1 3 4 [10, 7, 12]
defaultdict(<class 'list'>,
{7: [(1, 2), (3, 4)], 8: [(1, 2)], 9: [(1, 2)], 10: [(3, 4)], 12: [(3, 4)]})
现在这变得非常慢-有办法避免重复吗?