Pandas数据帧转换为元组列表的字典。

3

我有一个数据框(假设为df)中的一些数据:

Col_1   Col_2   Col_3
Key1    ACURA   CL
Key2    ACURA   EL
Key2    ACURA   ILX
Key3    ACURA   INTEGRA
Key4    ACURA   INTEGRA

我想看到的方式:

{'key1': [('ACURA', 'CL')], 
 'key2': [('ACURA', 'EL'), ('ACURA', 'ILX')], 
 'key3': [('ACURA', 'INTEGRA')], 
 'key4': [('ACURA', 'INTEGRA')]}

我尝试过使用 df.set_index('Col_1').T.to_dict('list') 这样的方法,但由于 Col_1 存在非唯一值,所以失败了。

当然,有一种简单的解决方案,就是逐行遍历数据框并手动创建字典,但我更喜欢更符合Pythonic风格的方式。

1个回答

3
这是你想要的功能:
In [50]:
df.groupby('Col_1')[['Col_2','Col_3']].apply(lambda x: [tuple(x) for x in x.values]).to_dict()

Out[50]:
{'Key1': [('ACURA', 'CL')],
 'Key2': [('ACURA', 'EL'), ('ACURA', 'ILX')],
 'Key3': [('ACURA', 'INTEGRA')],
 'Key4': [('ACURA', 'INTEGRA')]}

在这里,我们按'Col_1'进行分组,然后将值转换为列表内的元组,并在结果上调用to_dict


不,它没有给我想要的结果。看看我想要的'key2'格式:'key2': [('ACURA', 'EL'), ('ACURA', 'ILX')]。请注意,'key2'有两个实例。 - night_bat
现在已经更新了,看起来可能需要进行清理。 - EdChum
.apply() 对我抛出了这个错误:"TypeError: Series.name 必须是可哈希类型"。 - rfj001

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接