首页 > 解决方案 > 将数据框中的嵌套列表列更改为字典?

问题描述

我的问题是双重的:

我有一个 pandas 数据框,其中一列是以下形式的嵌套列表:

[['linkedin', '...'], ['country', '...'], ['location', 'United Kingdom London London'], ['city', 'London'], ['state', 'London']...]

我想将列中的每个条目更改为字典,以便我可以使用键实际访问这些项目:

{'linkedin': '...', 'country': 'United Kingdom', 'location': 'United Kingdom London London', 'city': 'London', 'state': 'London'..}

虽然这似乎完全可以通过使用 dict 对单个条目进行类型转换来实现,但实际上我很难为所有列条目执行此操作。例如,我尝试了以下以及 for 循环,但遇到了困难:

df['graphResults']=df['graphResults'].astype(dict)

,

df['graphResults']=dict(df['graphResults'])

,

for(x in range(0,df.shape[0])):
    df.graphResults[x] = dict(df.graphResults[x])

这是怎么做到的?

其次,在我实现了这一点之后,我想实际获取一些字段并将它们作为列添加到数据框中。有没有一个简单的方法呢?

标签: pythonpandasdictionarydataframe

解决方案


将我的评论作为答案。使用 apply ongraphResults转换为dict. 根据这些值,您可以创建一个新值DataFrame并加入原始值。

df.join(pd.DataFrame.from_records(df['graphResults'].apply(dict).values))

要仅选择某些字段,您可以执行以下操作:

df.join(pd.DataFrame.from_records(df['graphResults'].apply(dict).values)[['country', 'location']])

以上只会添加locationcountry字段。


推荐阅读