我有这样的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'}
}
}
基本上,具有相同“年”值的每一行都在嵌套在其年中的字典中。我尝试使用
遍历dffor index, row in df.iterrows():
但是,似乎只有最后一行迭代会停留。
有什么想法吗?
答案 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'}]}