我在Dataframe中有一些数据(例如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具有非唯一值而失败。当然,有一个简单的解决方案可以逐行运行df并手动创建我的字典,但是我更喜欢使用Python方式。
最佳答案
这就是您想要的:
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'上
groupby
,然后将值转换为列表内的元组,并在结果调用to_dict