我在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

07-24 09:52