我已经搜索了所有地方,并尝试了所有可能但无法完全从数据中获得所需信息的事情。
数据样本:
{
"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"]
}
]
}
答案 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]