熊猫groupby.apply(list)不产生值列表

时间:2020-11-10 13:11:17

标签: python pandas

我已经搜索了所有地方,并尝试了所有可能但无法完全从数据中获得所需信息的事情。

数据样本:

{
    "X": [
        {
          "displayname": "A",
          "url": "test",
          "property": "altLabel"
        },
        {
          "displayname": "A",
          "url": "test",
          "property": "prefLabel"
        },
        {
          "displayname": "B",
          "url": "test2",
          "property": "altLabel"
        },
        {
          "displayname": "B",
          "url": "test2",
          "property": "prefLabel"
        }
    ]
}

我想做什么:

按displayName分组,以便可以将searchableProperty作为数组。

我确定这是一个简单的问题,但是我发现没有任何事情可以为我解决。

我的数据框如下:

   id       displayname    url       property
0  X        A              test       altLabel
1  X        A              test       prefLabel
2  X        B              test2      altLabel
3  X        B              test2      prefLabel

我是那样做的:

grouped_df = filtered_df.groupby('displayname')['property'].apply(list)

但是我只获得了displayName而没有其他属性

所以我期望的是:

{
    "X": [
            {
              "displayname": "A",
              "url": "test",
              "property": ["altLabel", "prefLabel"]
            },
            {
              "displayname": "B",
              "url": "test2",
              "property": ["altLabel", "prefLabel"]
            }
        ]
}

1 个答案:

答案 0 :(得分:0)

这就是您要寻找的

df = df.groupby(['id', 'displayname', 'url'], as_index=False).agg(list)
print(df)

  id displayname    url               property
0  X           A   test  [altLabel, prefLabel]
1  X           B  test2  [altLabel, prefLabel]