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

如何对比两个DataFrame的value_counts结果,找出df2中出现次数更多的公司?

对比两个value_counts结果的实用方法

针对你遇到的「公司名是索引无法合并对比」的问题,直接用以下两种方法就能解决,还能快速找出df2中出现次数多于df1的公司:

方法一:重置索引后合并(直观易懂)

先把两个Series的索引(公司名)转成普通列,再合并计算:

import pandas as pd

# 给两个计数结果命名,重置索引把公司名转成列
first = df1['company'].value_counts().rename('df1_count').reset_index().rename(columns={'index': 'company'})
second = df2['company'].value_counts().rename('df2_count').reset_index().rename(columns={'index': 'company'})

# 外连接合并所有公司,缺失的计数填0
comparison = pd.merge(first, second, on='company', how='outer').fillna(0)

# 计算次数差值,筛选df2次数更多的公司
comparison['count_diff'] = comparison['df2_count'] - comparison['df1_count']
target_companies = comparison[comparison['df2_count'] > comparison['df1_count']]

# 查看结果
print(target_companies)

方法二:利用Series索引对齐(简洁高效)

Series会自动按索引对齐,直接做运算就能快速对比:

import pandas as pd

# 直接计算两个Series的差值,缺失值对应一方没有该公司的情况
count_diff = second - first

# 补全缺失值:df1中没有的公司,差值等于df2的计数
count_diff = count_diff.fillna(second)

# 筛选df2次数多于df1的公司(差值>0)
target_companies = count_diff[count_diff > 0]

# 如果需要同时查看两个计数,合并成DataFrame即可
comparison_df = pd.concat([first, second], axis=1, keys=['df1_count', 'df2_count']).fillna(0)
comparison_df['count_diff'] = comparison_df['df2_count'] - comparison_df['df1_count']
target_companies_full = comparison_df[comparison_df['count_diff'] > 0]

print(target_companies_full)

之前用.to_frame('counts')没解决问题,是因为只转成了DataFrame但没把索引转成列,加上.reset_index()就能把公司名从索引移到普通列里,后续合并就没问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:10:27