python - 将数据框中的嵌套列表列更改为字典?
问题描述
我的问题是双重的:
我有一个 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])
这是怎么做到的?
其次,在我实现了这一点之后,我想实际获取一些字段并将它们作为列添加到数据框中。有没有一个简单的方法呢?
解决方案
将我的评论作为答案。使用 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']])
以上只会添加location
和country
字段。
推荐阅读
- spring-boot - Spring Boot RollingFileAppender 创建文件但不附加任何内容
- android - getIntent().getExtras() 有时会在 Activity 中崩溃
- angular - 找出生产错误的根源
- node.js - 我想将文件夹上的每个数据都获取到 nodeJS
- angular - npm 包版本的依赖错误,但它们已安装
- django - 无法在“django”中找到属性“应用程序”
- ios - 如何从 PHPickerResult 获取 PHAsset?iOS 14
- android - 在 Kotlin Flow android 中从 OKHTTP 拦截器捕获自定义异常
- go - 如何在 .proto 文件中允许包名称的减号?
- wdk - windows WDK 例程命名规则