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

如何统计Pandas DataFrame中BPG组与其他组的匹配事件并处理分组结果

解决方法

1. 将相同symbol/date/hour的group转为列表

你之前的分组把group也纳入了分组键,导致同一组合下不同的group被拆分成了单独的组,所以无法得到目标列表。正确的做法是仅按symbol、date、hour分组,然后对group列做列表聚合:

import pandas as pd

# 按指定列分组,把group列聚合为列表
grouped_df = test_df.groupby(["symbol", "date", "hour"])["group"].agg(list).reset_index()

执行后grouped_df的group列就会是你需要的格式,比如[["BPG"],["BPG"],["MPG"],["BPF", "BPG"]]这类形式。

2. 统计BPG与其他组的匹配次数

接下来筛选出包含"BPG"且存在其他组的记录,再统计次数:

统计总匹配事件数

# 筛选:group列表包含BPG,且列表长度>1(说明有其他组共存)
bpg_cooccur = grouped_df[grouped_df["group"].apply(lambda x: "BPG" in x and len(x) > 1)]

# 总匹配次数就是筛选后的数据行数
total_bpg_matches = len(bpg_cooccur)

统计BPG与每个组的具体匹配次数

如果需要知道BPG分别和哪些组匹配了多少次,可以进一步处理:

# 提取所有包含BPG的配对
match_pairs = []
for group_list in bpg_cooccur["group"]:
    # 取出列表中除BPG外的其他组
    other_groups = [g for g in group_list if g != "BPG"]
    # 为每个其他组生成(BPG, 其他组)的配对
    for g in other_groups:
        match_pairs.append(("BPG", g))

# 统计各配对的出现次数
pair_count = pd.Series(match_pairs).value_counts()

比如结果可能是:

(BPG, BPF)    1
(BPG, MPG)    2
dtype: int64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:44:59