我在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并手动创建我的dict,但我更喜欢Pythonic方式。
答案 0 :(得分:2)
这样做你想要的:
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}' Col_1',然后我们将值转换为列表中的元组和结果调用groupby