Pandas Dataframe到带有元组的列表的字典

时间:2016-01-14 13:41:22

标签: python dictionary pandas type-conversion dataframe

我在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方式。

1 个答案:

答案 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