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

如何在Pandas中统计不同招标项目下投标者组合的投标次数

解决投标者组合共同投标次数统计问题

核心需求

获取每个投标者二人组合的共同投标项目次数,每个组合仅显示一次,避免重复记录。

解决步骤及代码

1. 导入依赖库

import pandas as pd
from itertools import combinations

2. 加载原始数据

data={'Tender_id':['T1','T1','T1','T1','T1','T1','T1','T1','T1','T1','T2','T2','T2','T2','T2','T2','T2','T2','T2','T2','T3','T3','T3','T3','T3','T3','T3','T3','T3','T3','T4','T4','T4','T4','T4','T4','T4','T4','T4','T4','T5','T5','T5','T5','T5','T5','T5','T5','T5','T5'], 'Bidder_id':['B1','B2','B3','B4','B5','B6','B7','B8','B9','B10','B2','B3','B4','B5','B6','B7','B8','B9','B10','B11','B1','B2','B3','B14','B15','B16','B7','B92','B9','B1','B91','B2','B3','B4','B5','B6','B17','B18','B19','B10','B1','B2','B93','B14','B15','B16','B17','B18','B19','B10']}

df = pd.DataFrame(data)

3. 数据预处理:去重

同一招标项目中,同一投标者多次投标应视为一次,先去重避免无效组合:

df_unique = df.drop_duplicates(subset=['Tender_id', 'Bidder_id'])

4. 生成唯一投标者组合

对每个项目的投标者排序后生成组合,确保B1-B2和B2-B1被视为同一组合,避免重复统计:

combinations_list = []
for tender, bidders in df_unique.groupby('Tender_id')['Bidder_id']:
    sorted_bidders = sorted(bidders)
    for pair in combinations(sorted_bidders, 2):
        combinations_list.append({
            'Bidder_1': pair[0],
            'Bidder_2': pair[1],
            'Tender_id': tender
        })

df_pairs = pd.DataFrame(combinations_list)

5. 统计组合共同投标次数

按投标者组合分组,直接统计出现次数(即共同投标的项目数):

result = df_pairs.groupby(['Bidder_1', 'Bidder_2']).size().reset_index(name='共同投标次数')

# 查看结果
print(result)

结果说明

最终的result DataFrame中,每一行对应一个唯一的投标者组合,共同投标次数列显示该组合一起参与投标的招标项目总数,无重复记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:36:18