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

Python中DataFrame字典两两比对计算成功率差值的实现方法

实现多DataFrame两两比对计算成功率差值方案

实现逻辑

  • 先对字典内的所有DataFrame做预处理:统一将Symbol设为索引,仅保留Successful Rate列并将列名重命名为对应测试名,方便后续合并计算
  • 自动生成所有不重复的两两测试组合,避免重复计算正反两组相同的比对
  • 对每组比对的两个DataFrame做交集合并,仅保留共有的Symbol后计算成功率差值
  • 最终输出结果字典,键为比对组名称,值为对应结果表

完整代码

import pandas as pd
from itertools import combinations

# 预处理原始DataFrame字典
processed_dict = {}
# 请将下方的df_dict替换为你自己存储DataFrame的字典变量名
for test_name, df in df_dict.items():
    # 仅保留需要的列,将Symbol设为索引方便对齐
    tmp = df.set_index("Symbol")[["Successful Rate"]]
    # 重命名列名为测试名,避免合并时列名冲突
    tmp = tmp.rename(columns={"Successful Rate": test_name})
    processed_dict[test_name] = tmp

# 生成所有不重复的两两测试组合
test_list = list(processed_dict.keys())
compare_groups = combinations(test_list, 2)

# 存储最终结果
result_dict = {}
for test_a, test_b in compare_groups:
    # 合并两个测试的DataFrame,内连接仅保留共有的Symbol
    merged_df = pd.merge(
        processed_dict[test_a],
        processed_dict[test_b],
        left_index=True,
        right_index=True,
        how="inner"
    )
    # 计算成功率差值,如需调换顺序可交换test_a和test_b的位置
    merged_df["Successful Rate Difference"] = merged_df[test_a] - merged_df[test_b]
    # 重置索引将Symbol变回普通列,仅保留需要的输出字段
    result_df = merged_df.reset_index()[["Symbol", "Successful Rate Difference"]]
    # 存入结果字典
    result_dict[f"{test_a} & {test_b}"] = result_df

结果调用示例

你可以直接通过比对组名称调取对应结果,例如要获取test1和test2的比对结果,执行print(result_dict["test1 & test2"])即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:36:10