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

使用Pandas比对两个Excel表格Debit/Credit列差异及重复值校验

Pandas比对两表格Debit/Credit列的数值及频次差异解决方法

直接用pd.merge()匹配原始表格行数据,没法直接统计数值的出现频次差异,换个思路:先统计两表目标列的数值频次,再比对频次结果,就能同时解决仅单侧存在的数值和频次不一致的问题。

步骤1:合并目标列数据

先把每个表格的Debit和Credit列合并成一个Series,排除空值避免干扰:

import pandas as pd

# 提取Df1的Debit、Credit列并合并,丢弃空值
df1_all = pd.concat([Df1['Debit'], Df1['Credit']]).dropna()
# 提取Df2的Debit、Credit列并合并,丢弃空值
df2_all = pd.concat([Df2['Debit'], Df2['Credit']]).dropna()

步骤2:统计数值出现频次

用value_counts()统计每个数值的出现次数,转成DataFrame方便后续合并:

# 统计Df1各数值的频次
counts_df1 = df1_all.value_counts().reset_index()
counts_df1.columns = ['数值', 'Df1出现次数']

# 统计Df2各数值的频次
counts_df2 = df2_all.value_counts().reset_index()
counts_df2.columns = ['数值', 'Df2出现次数']

步骤3:比对频次找出差异

用全外连接合并两个频次表,然后筛选三类差异:

# 全外连接合并,空值填充为0
comparison_result = pd.merge(counts_df1, counts_df2, on='数值', how='outer').fillna(0)

# 1. 仅在Df1存在的数值
only_in_df1 = comparison_result[comparison_result['Df2出现次数'] == 0][['数值', 'Df1出现次数']]
# 2. 仅在Df2存在的数值
only_in_df2 = comparison_result[comparison_result['Df1出现次数'] == 0][['数值', 'Df2出现次数']]
# 3. 数值存在但频次不一致的情况
mismatched_counts = comparison_result[
    (comparison_result['Df1出现次数'] != comparison_result['Df2出现次数']) &
    (comparison_result['Df1出现次数'] != 0) &
    (comparison_result['Df2出现次数'] != 0)
]

注意事项

如果遇到浮点数精度问题(比如9894.0和9894.00被识别为不同值),可以先对数值做精度统一:

df1_all = df1_all.round(2)
df2_all = df2_all.round(2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:05:21