不使用Pyspark如何提取字典列表指定字段转为dataframe独立列
解决方案(基于Pandas,符合你无法使用Pyspark的要求)
前置依赖导入
import pandas as pd import json
第一步:提取CountryOfManufacture字段
分两种场景处理:
- 场景1:原始DataFrame中存储字典的列已经是Python字典类型
# 请将下方的json_col替换为你实际存储字典的列名 country_col = 原始df名称['json_col'].apply(lambda x: x.get('CountryOfManufacture', None))
- 场景2:原始DataFrame中存储字典的列为JSON字符串格式
country_col = 原始df名称['json_col'].apply(lambda x: json.loads(x).get('CountryOfManufacture', None))
第二步:将提取的字段添加到目标DataFrame
# 请将下方的目标df名称替换为你要新增字段的DataFrame名称 # 需保证原始df和目标df行数一致、索引对应,避免数据错位 目标df名称['CountryOfManufacture'] = country_col
可选批量处理方案
如果你后续需要提取JSON中的多个字段,可以用pd.json_normalize一键解析所有JSON字段:
# 解析所有JSON字段生成单独的DataFrame json_parse_df = pd.json_normalize(原始df名称['json_col']) # 合并需要的字段到目标DataFrame 目标df名称 = pd.concat([目标df名称, json_parse_df[['CountryOfManufacture']]], axis=1)
注意事项
- 代码中
get方法的第二个参数None是默认填充值,若某行数据没有CountryOfManufacture字段会自动填充空值,不会触发报错 - 若两个DataFrame索引不匹配,可以先把提取到的
country_col转成列表再赋值,确保行对应关系正确
内容的提问来源于stack exchange,提问作者CharleeBee
相关产品推荐
相关产品推荐

