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

Python实现A→B与B→A组合的计数合并需求

合并双向配对计数的Python实现

方法1:使用Pandas(适合表格数据)

如果你的数据是DataFrame格式(比如从CSV/Excel导入的两列数据),可以通过标准化配对顺序(将每个配对按字典序排序,把NYC→LA和LA→NYC统一成(LA, NYC)),再分组求和:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    'A': ['NYC', 'LA', 'NYC', 'CHI', 'LA'],
    'B': ['LA', 'NYC', 'CHI', 'NYC', 'CHI'],
    'count': [2, 3, 1, 4, 2]
})

# 标准化配对:将每个(A,B)转换为排序后的元组
df['pair'] = df.apply(lambda row: tuple(sorted((row['A'], row['B']))), axis=1)

# 分组求和
result = df.groupby('pair')['count'].sum().reset_index()
# 可选:将配对拆回两列
result[['city1', 'city2']] = pd.DataFrame(result['pair'].tolist(), index=result.index)
result = result.drop('pair', axis=1)

print(result)

输出会自动合并双向配对的计数(比如NYC→LA和LA→NYC的计数合并为5)。

方法2:原生Python字典(适合列表/元组数据)

如果是原始的配对列表(比如[('NYC','LA'), ('LA','NYC'), ...]),可以用字典统计,同样先标准化配对:

# 示例数据:每个元素是(起点, 终点, 计数)
pairs = [('NYC', 'LA', 2), ('LA', 'NYC', 3), ('NYC', 'CHI', 1), ('CHI', 'NYC',4), ('LA','CHI',2)]

count_dict = {}
for a, b, cnt in pairs:
    # 排序后作为字典的键,确保双向配对共用同一个键
    key = tuple(sorted((a, b)))
    count_dict[key] = count_dict.get(key, 0) + cnt

# 转换为可读格式
result = [(k[0], k[1], v) for k, v in count_dict.items()]
print(result)

输出:[('LA', 'NYC', 5), ('CHI', 'NYC', 5), ('CHI', 'LA', 2)]

核心逻辑都是通过排序统一双向配对的标识,不管配对顺序如何,都会被归为同一组统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:15:51