Pandas to_dict 数据结构,使用列作为字典索引

问题描述

这只是我试图用 Pandas 实现的一个非常具体的数据结构转换,所以如果你知道怎么做,请分享:)

想象一下我有一个像这样的数据框

id 价值 日期
1 1 2021-04-01
1 5 2021-04-02
1 10 2021-04-03
2 3 2021-04-01
2 4 2021-04-02
2 11 2021-04-03

现在我想把它转换成一个对象,其中键是 id,值是关于该 id 的信息数组。所以它看起来像这样......

{
  '1': [
         { 'value': 1,'date': '2021-04-01' },{ 'value': 5,'date': '2021-04-02' },{ 'value': 10,'date': '2021-04-03' }
       ],'2': [
         { 'value': 3,{ 'value': 4,{ 'value': 11,}

我想我必须以某种方式使用 .to_dict(),但我不知道该怎么做?

想法?

编辑:我已经想出了一种蛮力的方法,我正在寻找更优雅的东西;)

解决方法

您可以在将数据框转换为 dict 对象后使用列表理解。

但这里有一种更熊猫的方式,如果您的 id 列是数据框的真实列,

df = df.set_index('id').T.to_dict()

如果您的意思是 id 作为数据帧的索引,请使用,

df = df.T.to_dict()
,

您可以在 groupby() 上使用 id,然后在每个组上使用 apply() to_dict()

df.groupby('id').apply(lambda x: x[['value','date']].to_dict(orient='records')).to_dict()
{1: [{'value': 1,'date': '2021-04-01'},{'value': 5,'date': '2021-04-02'},{'value': 10,'date': '2021-04-03'}],2: [{'value': 3,{'value': 4,{'value': 11,'date': '2021-04-03'}]}