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

基于特定条件对比并统计两个Pandas DataFrame中的企业数据

问题描述

数据集

df1

companydateact_callact_visitpo
A2022-10-01YesNoNo
B2022-10-01YesNoYes
C2022-10-01NoNoNo
B2022-10-02NoYesNo
A2022-10-02NoYesYes

df2

companydateact_callact_visitpo
D2022-11-01YesNoNo
B2022-11-01YesNoYes
C2022-11-01YesYesNo
D2022-11-02NoYesNo
A2022-11-02NoYesYes

统计需求

对比两个DataFrame,统计两类符合条件的公司数量:

  1. 同时存在于两个DataFrame中的公司数量;
  2. 同时存在于两个DataFrame中,且满足:
    • df2中至少有一条记录的act_call为'Yes'且act_visit为'Yes'
    • df1中所有记录的po为'No'

尝试过的方法

  • 针对第一个条件,使用pandas.DataFrame.sum()和pandas.DataFrame.count_values()未得到预期结果;
  • 针对第二个条件,尝试了以下代码,但不确定是否仅统计共同存在的公司:
    (((df1[['act_calling', 'act_visit']].eq('yes'))&(df2['po'].eq('no'))).groupby(df2['company_name']).any().all(axis = 1).sum())
    

预期输出

  1. 3,(A, B, C)
  2. 1,(C)

解决方案

1. 统计同时存在于两个DataFrame的公司数量

通过集合交集直接获取共同公司,统计长度即可:

import pandas as pd

# 提取两个DataFrame的唯一公司集合
companies_df1 = set(df1['company'].unique())
companies_df2 = set(df2['company'].unique())

# 计算交集并统计数量
common_companies = companies_df1 & companies_df2
count_common = len(common_companies)

print(f"同时存在的公司数量:{count_common},({', '.join(common_companies)})")

运行结果:同时存在的公司数量:3,(A, B, C)

2. 统计符合第二个条件的公司数量

拆分条件分步筛选,再取交集确保只统计共同存在的公司:

# 筛选df1中所有记录po均为'No'的公司
df1_valid = df1.groupby('company')['po'].apply(lambda x: (x == 'No').all())
valid_df1 = df1_valid[df1_valid].index.tolist()

# 筛选df2中至少有一条记录act_call和act_visit均为'Yes'的公司
df2_valid = df2.groupby('company').apply(
    lambda x: ((x['act_call'] == 'Yes') & (x['act_visit'] == 'Yes')).any()
)
valid_df2 = df2_valid[df2_valid].index.tolist()

# 取三类集合的交集:符合df1条件、符合df2条件、同时存在于两个DataFrame
target_companies = set(valid_df1) & set(valid_df2) & common_companies
count_target = len(target_companies)

print(f"符合条件的公司数量:{count_target},({', '.join(target_companies)})")

运行结果:符合条件的公司数量:1,(C)

逻辑说明

  • 第一个统计用集合交集,高效且直接,避免了复杂的DataFrame操作;
  • 第二个统计拆分两个子条件分别筛选,再与共同公司集合取交集,确保结果仅包含同时满足所有要求的公司,避免跨表操作的逻辑混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:35:11