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

如何用Pandas对比Excel与JSON文件?适用命令有哪些?

使用Pandas对比Excel与JSON文件的方法及实用命令

数据示例

1. Excel文件内容

IDPriceStatus
11000Free
22000Option
33000Reserved

2. JSON文件内容

注意:该JSON为多行独立JSON对象(非标准JSON数组),需用特殊方式加载:

{
            "id": 1,
            "price": "1000",
            "status": "free"
}
{
            "id": 2,
            "localization": "2000",
            "reference": "Option"
}
{
            "id": 3,
            "localization": "3000",
            "reference": "Reserved"
}

对比步骤及实用命令

1. 加载文件到Pandas DataFrame

加载Excel文件

直接用pd.read_excel()读取,同时统一列名格式:

import pandas as pd

# 加载Excel文件
df_excel = pd.read_excel("your_excel_file.xlsx")
# 列名转小写,和JSON字段格式对齐
df_excel.columns = df_excel.columns.str.lower()

加载多行JSON文件

利用lines=True参数读取多行独立JSON对象,再统一字段名:

# 加载多行JSON
df_json = pd.read_json("your_json_file.json", lines=True)

# 重命名不一致的字段,和Excel列名对齐
df_json = df_json.rename(columns={
    "localization": "price",
    "reference": "status"
})

2. 统一数据类型与格式

JSON中price是字符串、status大小写不一致,需和Excel数据对齐:

# 将JSON的price转为整数类型
df_json["price"] = df_json["price"].astype(int)
# 统一status字段的大小写格式
df_json["status"] = df_json["status"].str.capitalize()

3. 执行数据对比

方法1:合并后标记匹配状态

通过id关联两个DataFrame,标记每行在两个文件中的存在情况:

# 全量合并两个DataFrame,保留所有行
merged_df = pd.merge(
    df_excel,
    df_json,
    on="id",
    how="outer",
    suffixes=("_excel", "_json"),
    indicator=True
)

# 筛选出仅存在于单个文件的差异行
diff_rows = merged_df[merged_df["_merge"] != "both"]
print(diff_rows)

方法2:快速判断整体一致性

如果两个DataFrame的结构、数据完全一致,equals()会返回True:

# 确保两个DataFrame的列顺序一致
df_excel = df_excel[["id", "price", "status"]]
df_json = df_json[["id", "price", "status"]]

# 判断整体是否一致
print(df_excel.equals(df_json))

方法3:逐单元格展示差异

用compare()直接输出两个DataFrame的单元格级差异:

# 先按id排序,确保行顺序完全对齐
df_excel_sorted = df_excel.sort_values("id").reset_index(drop=True)
df_json_sorted = df_json.sort_values("id").reset_index(drop=True)

# 输出详细差异
diff_details = df_excel_sorted.compare(df_json_sorted)
print(diff_details)

4. 核心实用命令汇总

  • 文件加载:pd.read_excel()、pd.read_json(lines=True)(处理多行JSON)
  • 字段对齐:df.rename()(重命名列)、df.columns.str.lower()(统一列名格式)
  • 数据格式化:df["col"].astype()(类型转换)、df["col"].str.capitalize()(字符串格式统一)
  • 合并对比:pd.merge(..., indicator=True)(标记行的匹配状态)
  • 直接对比:df.equals()(整体一致性判断)、df.compare()(单元格级差异展示)
  • 排序对齐:df.sort_values()、df.reset_index(drop=True)(确保行顺序一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:35:18