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

如何将嵌套JSON转为Pandas DataFrame并移除内部列表重复值

解决嵌套JSON转Pandas DataFrame并移除values列表重复值的问题

核心思路

先对每个JSON条目内的values列表做去重处理,再转换为DataFrame。根据你的需求,去重规则是保留每个子列表的唯一实例(首次出现的条目优先)。

假设原始JSON结构

先模拟符合你需求的输入数据:

raw_json = [
    {
        "key": "metric_a",
        "values": [
            [1435781430.781, "1"],
            [1435781430.781, "1"],  # 重复条目
            [1435781450.781, "1"]   # 额外重复示例
        ]
    },
    {
        "key": "metric_b",
        "values": [
            [1435781430.781, "0"],
            [1435781430.781, "0"],  # 重复条目
            [1435781460.781, "1"]
        ]
    }
]

方案1:保留嵌套结构的去重

如果需要保留原有的嵌套values列表结构,用以下代码处理:

import pandas as pd

processed_data = []
for entry in raw_json:
    # 将子列表转成可哈希的元组,用dict.fromkeys去重(保留首次出现的条目)
    unique_tuples = list(dict.fromkeys(tuple(v) for v in entry["values"]))
    # 转回列表格式
    unique_values = [list(t) for t in unique_tuples]
    processed_data.append({
        "key": entry["key"],
        "values": unique_values
    })

# 转换为DataFrame
df = pd.DataFrame(processed_data)
print(df)

运行后,第一个values列表仅保留[1435781430.781, "1"],第二个列表保留指定的两个唯一条目。

方案2:扁平化结构的去重(更适合数据分析)

如果需要将values展开为DataFrame的行,方便后续分析,用以下代码:

import pandas as pd

flattened_data = []
for entry in raw_json:
    metric_key = entry["key"]
    # 先对当前指标的values去重
    unique_tuples = list(dict.fromkeys(tuple(v) for v in entry["values"]))
    for timestamp, value in unique_tuples:
        flattened_data.append({
            "metric": metric_key,
            "timestamp": timestamp,
            "value": value
        })

# 转换为DataFrame
df = pd.DataFrame(flattened_data)
print(df)

最终得到的DataFrame每行对应一个唯一的时间戳-值组合,结构更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:55:15