数据框到字典,嵌套字典中所有相同的列值

时间:2020-06-03 20:47:48

标签: python pandas

我有这样的df:

Year     Name       Details
2009     Apple       Red
2010     Banana      Yellow
2010     Grape       Purple

我想从df转到看起来像这样的字典:

{{'2009': 
    {'Name': 'Apple', 'Details' : 'Red'}
 }
 {'2010': 
    {'Name': 'Banana', 'Details' : 'Yellow'},
    {'Name': 'Grape', 'Details' : 'Purple'}
  }
}

基本上,具有相同“年”值的每一行都在嵌套在其年中的字典中。我尝试使用

遍历df
for index, row in df.iterrows():

但是,似乎只有最后一行迭代会停留。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以两次to_dict

df.groupby('Year').apply(lambda s: s.drop('Year', 1).to_dict('records')).to_dict()

或使用字典理解

{year: sub.to_dict('records') for year, sub in df.groupby('Year')}

{2009: [{'Details': 'Red', 'Name': 'Apple'}],
 2010: [{'Details': 'Yellow', 'Name': 'Banana'},
  {'Details': 'Purple', 'Name': 'Grape'}]}