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

如何编写Python函数统计所有状态为Yes的唯一企业数量?

统计所有状态全为"Yes"的企业数量

数据示例

company_namenew_company_status
A Co.,LtdYes
B. IncNo
PT XYZNo
PT DFE, Tbk.Yes
A Co.,LtdYes
PT DFE, Tbk.Yes

需求说明

编写Python函数,从company_name列提取所有唯一企业名称,检查每个企业对应的new_company_status是否全部为"Yes",统计符合条件的企业总数,最终返回该整数。

现有代码问题

你提供的代码存在几处错误:

  • 函数参数为DataFrame,但内部使用未定义的df,会引发变量未找到错误
  • values.tolist缺少括号,应写为values.tolist(),否则获取的是方法对象而非列表
  • 遍历唯一企业时,未筛选当前企业的行,直接判断整列等于"Yes",逻辑错误
  • 集合uniq_comp不能用+=1做计数操作,类型不匹配

修正后的代码

简洁高效版(利用pandas分组聚合)

import pandas as pd

def count_all_yes_companies(df):
    # 按企业分组,检查每组状态是否全为Yes,统计符合条件的数量
    all_yes_companies = df.groupby('company_name')['new_company_status'].apply(lambda x: (x == 'Yes').all())
    return all_yes_companies.sum()

分步实现版(适合理解逻辑)

def count_all_yes_companies(df):
    # 获取所有唯一企业名称
    unique_companies = df['company_name'].unique().tolist()
    valid_count = 0
    
    for company in unique_companies:
        # 筛选当前企业的所有状态记录
        company_statuses = df[df['company_name'] == company]['new_company_status']
        # 检查该企业的所有状态是否都是"Yes"
        if (company_statuses == 'Yes').all():
            valid_count += 1
    
    return valid_count

测试代码

# 构建测试数据
data = {
    'company_name': ['A Co.,Ltd', 'B. Inc', 'PT XYZ', 'PT DFE, Tbk.', 'A Co.,Ltd', 'PT DFE, Tbk.'],
    'new_company_status': ['Yes', 'No', 'No', 'Yes', 'Yes', 'Yes']
}
df = pd.DataFrame(data)

# 调用函数并输出结果
result = count_all_yes_companies(df)
print(result)  # 输出:2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:45:35