You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas json_normalize展平JSON:提取tags.tags并生成扁平化DataFrame

解决Pandas展平JSON时无法处理多层级(尤其是tags.tags)的问题

你当前使用pd.json_normalize(data['conversations'])只能展平部分层级,对于tags.tags这类嵌套数组无法完全扁平化,以下是实现完全扁平化DataFrame的方案:

步骤说明

pd.json_normalize默认不会展开嵌套数组,需要先通过explode拆分数组列,再对拆分后的嵌套对象进行二次展平,最终合并所有字段。

完整代码

import pandas as pd

# 假设data是你提供的JSON结构数据
# 1. 先展平顶层对话数据(不处理数组列)
df = pd.json_normalize(data['conversations'])

# 2. 处理tags.tags数组:拆分后展平嵌套字段
df = df.explode('tags.tags', ignore_index=True)
df = pd.concat([df.drop('tags.tags', axis=1), pd.json_normalize(df['tags.tags'])], axis=1)

# 3. 处理contacts.contacts数组
df = df.explode('contacts.contacts', ignore_index=True)
df = pd.concat([df.drop('contacts.contacts', axis=1), pd.json_normalize(df['contacts.contacts'])], axis=1)

# 4. 处理teammates.admins数组
df = df.explode('teammates.admins', ignore_index=True)
df = pd.concat([df.drop('teammates.admins', axis=1), pd.json_normalize(df['teammates.admins'])], axis=1)

# 设置显示所有列
pd.set_option('display.max_columns', None)

效果说明

执行后,所有嵌套层级(包括数组内的对象)都会被展平为独立列:

  • 原tags.tags中的每个tag的id、name、applied_at等字段会变成单独列
  • 数组拆分后,每个数组元素对应一行原对话数据(比如一个对话有4个tag,会生成4行数据,每行对应一个tag,同时保留对话的其他属性)
  • 其他嵌套数组(如contacts.contacts、teammates.admins)也会被同样处理

内容的提问来源于stack exchange,提问作者lpca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:45:08