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

如何统计DataFrame列条目在另一DF列数组中的出现频次

频次统计实现步骤

按以下步骤操作即可匹配你现有的数据结构,快速得到目标统计结果:

1. 提取已整理好的嵌套交易列表

你当前的items是单单元格存储的全量交易集合,直接把这层嵌套列表取出即可:

all_transactions = items.iloc[0, 0]
# 取出后结构为 [['a', 'b'], ['a'], ['b', 'c']]

2. 逐交易统计元素出现频次

单条交易内需要对元素去重,避免同一条交易中重复出现同一个元素导致计数虚高:

freq_dict = {}
for trans in all_transactions:
    # 交易内元素去重后计数
    for item in set(trans):
        freq_dict[item] = freq_dict.get(item, 0) + 1

执行完这步得到的freq_dict结果为 {'a': 2, 'b': 2, 'c': 1},和目标计数完全一致。

3. 将频次映射回consequents表

列表无法直接作为字典键,需要把consequents里的列表条目转成元组后匹配对应频次:

consequents['freq'] = consequents['consequents'].apply(
    lambda row_item: freq_dict.get(tuple(row_item), 0)
)

最终得到的结果表完全符合需求:

consequentsfreq
['a']2
['b']2
['c']1

通用扩展(支持多元素后继组合)

如果后续consequents出现多元素组合(比如['a','b']需要两个元素同时出现在某条交易里才算一次有效计数),直接替换第2步的计数逻辑即可适配:

# 把所有consequents转成集合格式,便于做子集判断
consequent_groups = [set(c) for c in consequents['consequents'].tolist()]
freq_dict = {tuple(group): 0 for group in consequent_groups}

for trans in all_transactions:
    trans_set = set(trans)
    for group in consequent_groups:
        # 判断当前交易是否包含完整的后继组合
        if group.issubset(trans_set):
            freq_dict[tuple(group)] += 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 05:06:10