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

如何在Pandas中先过滤DataFrame再匹配统计频率并计算差异

实现方法

步骤1:过滤df2得到仅包含df1中存在的项目编号的df2_new

import pandas as pd

# 示例数据构造,实际使用时替换为你自己的df1、df2即可
df1 = pd.DataFrame({'Project_Number': ['S100', 'S100', 'S200', 'S300', 'S300', 'S300', 'S400', 'S400']})
df2 = pd.DataFrame({'Project_Number': ['S100', 'S200', 'S200', 'S300', 'S300', 'S300', 'S500']})

# 过滤逻辑:仅保留df2中项目编号同时在df1里存在的行
df2_new = df2[df2['Project_Number'].isin(df1['Project_Number'])].copy()

步骤2:分别统计两个DataFrame的项目编号出现频率

# 得到索引为项目编号、值为对应出现次数的统计Series
count_df1 = df1['Project_Number'].value_counts()
count_df2_new = df2_new['Project_Number'].value_counts()

步骤3:合并统计结果并筛选差异项

这里用外连接合并两个统计结果,确保df1中存在但df2_new中不存在的项目(如示例的S400)也能纳入对比,缺失的计数统一填充为0,最后筛选出两个计数不相等的项目即可:

# 合并计数结果
compare_df = pd.merge(
    count_df1.reset_index(name='count1'),
    count_df2_new.reset_index(name='count2'),
    on='Project_Number',
    how='outer'
).fillna(0)

# 筛选计数不等的差异项目
df_difference = compare_df.loc[compare_df['count1'] != compare_df['count2'], ['Project_Number']].reset_index(drop=True)

运行print(df_difference)即可得到你需要的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:27:03