Skip to main content
 首页 » 编程设计

python之Pandas之快速创建列和行组之外的字典

2025年05月04日22think

我正在尝试从值组中快速制作字典,其中字典中的每个元素都有来自与该值关联的其他两个列的键值对。例如:

我的数据:

                 cheese               x               y 
 1  0000000000000005559               1               2 
 2  0000000000000005559               2               2 
 3  0000000000000004058               3               5 
 4  0000000000000004058               4               5 
 5  0000000000000004058               5               5 

期望的输出:

cheese 
0000000000000005559              {1: 2, 2: 2} 
0000000000000004058        {3: 5, 4: 5, 5: 5} 
0000000000000007157              {6: 7, 7: 7} 
0000000000000000815    {8: 10, 9: 10, 10: 10} 
0000000000000009160          {11: 12, 12: 12} 

我可以使用过于复杂的 lambda 和 apply 来做到这一点,但是对于更大的数据帧(数百万个唯一分组的顺序)来说,这真的很慢。我怎样才能快速实现这一目标?

请您参考如下方法:

一种使用defaultdict
的方法 这应该很快

from collections import defaultdict 
 
d = defaultdict(dict) 
 
es = df.epoch.values.tolist() 
xs = df.x.values.tolist() 
ys = df.y.values.tolist() 
 
for e, x, y in zip(es, xs, ys): 
    d[e][x] = y 
 
pd.Series(d) 
 
1505339100449045559          {1: 2, 2: 2} 
1505339102148504058    {3: 5, 4: 5, 5: 5} 
dtype: object