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

求同一Document_Source下任意两个Title共现次数的统计代码

嘿,我来帮你搞定这两个统计问题!

问题1:统计某一列中任意两个元素共同出现的次数

核心思路其实很简单:我们需要先确定「共同出现」的定义——也就是两个元素在同一个“分组”里出现(比如同一行、同一个类别分组下),然后统计每对元素出现在多少个这样的分组里。通用步骤如下:

  • 第一步:确定分组规则:比如是按行分组(一行里的元素算一组),还是按另一列的类别分组(比如问题2里的Document_Source)。
  • 第二步:生成元素对:对每个分组里的元素,生成所有不重复的无序元素对(避免把A&B和B&A当成两个不同的对重复统计)。
  • 第三步:统计次数:把所有分组生成的元素对收集起来,统计每对出现的总次数。
问题2:统计任意两个Title共同出现的Document_Source次数

根据你的预期输出(比如Dead poet society和Before sunrise:2代表这两个Title在2个来源中同时出现),我用Python的pandas和itertools给你写了一段可直接运行的代码,附带详细解释:

第一步:先模拟样本数据(你可以替换成自己的真实数据)

import pandas as pd

# 模拟你的数据结构,你可以把这里换成读取自己的csv/excel文件
# 比如 df = pd.read_csv('your_data.csv')
data = {
    'Document_Source': ['Source1', 'Source1', 'Source2', 'Source2', 'Source3'],
    'Title': ['Dead poet society', 'Before sunrise', 'Dead poet society', 'Before sunrise', 'Dead poet society']
}
df = pd.DataFrame(data)

第二步:核心统计代码

from itertools import combinations

# 1. 按Document_Source分组,获取每个来源下的唯一Title(避免同一来源内重复Title干扰统计)
source_unique_titles = df.groupby('Document_Source')['Title'].unique()

# 2. 遍历每个来源,生成所有不重复的Title对(无序,确保A&B和B&A被视为同一对)
all_title_pairs = []
for titles in source_unique_titles:
    # 先排序再生成组合,保证每对Title的顺序一致,避免重复统计
    sorted_titles = sorted(titles)
    pairs = combinations(sorted_titles, 2)
    all_title_pairs.extend(pairs)

# 3. 统计每对Title的出现次数,并转换成你想要的格式输出
pair_count_result = pd.Series(all_title_pairs).value_counts().reset_index()
pair_count_result.columns = ['Title_Pair', 'Occurrence_Count']

# 打印成你要的示例格式
for _, row in pair_count_result.iterrows():
    title_a, title_b = row['Title_Pair']
    print(f"{title_a}和{title_b}:{row['Occurrence_Count']}")

代码说明

  • groupby('Document_Source')['Title'].unique():确保每个来源下的Title只保留唯一值,比如如果某个来源里多次出现同一个Title,不会重复计算。
  • combinations(sorted_titles, 2):sorted是关键,它能让(A,B)和(B,A)变成同一个组合,避免重复统计;combinations则负责生成所有不重复的2元Title对。
  • 最终输出完全符合你给出的示例格式,运行上面的模拟数据会得到:Dead poet society和Before sunrise:2,和你的预期一致。

如果你当前代码有问题,可以检查这几点

  • 是否处理了同一来源内的重复Title?如果没处理,会导致同一来源内的重复Title生成无效的对。
  • 是否生成的是无序对?如果生成的是有序对,会把A&B和B&A当成两个不同的对,统计结果会翻倍。
  • 是否正确按Document_Source分组统计?确保是统计跨来源的共同出现次数,而不是同一来源内的出现次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:38:42