使用Pandas json_normalize展开JSON列时如何保留id de transação列
用json_normalize展开JSON列并保留关联ID列的解决方案
你需要展开DataFrame中的dados JSON列,同时保留id de transação列用于后续合并,但之前使用meta参数的方式有误——meta参数适用于处理嵌套数组时提取外层元数据,而你的场景是每个JSON对象与一个ID一一对应,以下是两种可行的解决方法:
方法1:基于原DataFrame合并(更直观)
先单独展开dados列,再将id de transação列与展开后的结果横向合并:
import pandas as pd # 展开dados列 df_dados = pd.json_normalize(df['dados']) # 合并id列和展开后的结果 df_resultado = pd.concat([df['id de transação'], df_dados], axis=1)
方法2:调整输入数据结构适配json_normalize
将每个ID与对应的JSON对象打包成新的字典列表,再直接用json_normalize处理:
import pandas as pd # 构造包含id和对应dados的字典列表 data_ajustada = [ {'id de transação': id_t, **dado} for id_t, dado in zip(data['id de transação'], data['dados']) ] # 直接解析调整后的数据 df_dados_normalized = pd.json_normalize(data_ajustada)
最终期望输出
两种方法都会得到如下结果:
id de transação data local valor 0 1 2024-01-01 São Paulo 100.50 1 2 2024-01-02 Rio de Janeiro 200.75 2 3 2024-01-03 Belo Horizonte 300.00 3 4 2024-01-04 Curitiba 400.25 4 5 2024-01-05 Porto Alegre 500.50
内容的提问来源于stack exchange,提问作者FábioRB
相关产品推荐
相关产品推荐

