用包含列表的列从pandas数据框中创建字典

时间:2019-11-12 11:06:39

标签: python python-3.x pandas dataframe defaultdict

我有一个(巨大的)数据框,其中包含三列,第三列具有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)]})

现在这变得非常慢-有办法避免重复吗?

0 个答案:

没有答案