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

如何为Pandas DataFrame添加多维列并实现分数条件查询?

解决方案

1. 构建REF分数映射字典

先把ref_df转换成字典,实现快速查找REF对应的分数,避免重复查询DataFrame:

# 构建REF名称到分数的映射字典
ref_score_map = ref_df.set_index('NAME')['SCORE'].to_dict()

2. 生成包含REF_INFO的merged_df

定义处理函数,兼容REF列的三种类型(列表、None、单个字符串),生成对应的名称-分数映射:

def parse_ref_info(ref_value):
    if ref_value is None:
        return {}
    # 统一转为列表处理,不管输入是单个值还是已有列表
    ref_list = [ref_value] if isinstance(ref_value, str) else ref_value
    # 过滤不在映射字典中的REF,避免KeyError
    return {ref: ref_score_map[ref] for ref in ref_list if ref in ref_score_map}

# 复制原DataFrame并添加REF_INFO列
merged_df = issue_df.copy()
merged_df['REF_INFO'] = merged_df['REF'].apply(parse_ref_info)

处理后merged_df的REF_INFO列会存储对应{REF名称: 分数}的字典,例如第一行结果为{'REF1': 100.0, 'REF2': 99.0},空REF对应空字典。

3. 查询分数低于指定值的行

设定阈值后,筛选出REF_INFO中存在分数低于阈值的行:

threshold = 90
# 筛选条件:REF_INFO中至少有一个分数小于阈值
filtered_df = merged_df[merged_df['REF_INFO'].apply(lambda x: any(score < threshold for score in x.values()))]

完整可运行代码

import pandas as pd

issue_data = {
    'COL1': ['Name1', 'Name2', 'Name3', 'Name4'],
    'COL2': ['Val1', 'Val2', 'Val3', 'Val4'],
    'REF': [['REF1', 'REF2'], None, ['REF1', 'REF2', 'REF3'], 'REF2']}
ref_data = {
    'NAME': ['REF1', 'REF2', 'REF3'],
    'SCORE': [100.0, 99.0, 85.0]}

issue_df = pd.DataFrame(issue_data)
ref_df = pd.DataFrame(ref_data)

# 构建REF分数映射字典
ref_score_map = ref_df.set_index('NAME')['SCORE'].to_dict()

# 处理REF列生成REF_INFO
def parse_ref_info(ref_value):
    if ref_value is None:
        return {}
    ref_list = [ref_value] if isinstance(ref_value, str) else ref_value
    return {ref: ref_score_map[ref] for ref in ref_list if ref in ref_score_map}

merged_df = issue_df.copy()
merged_df['REF_INFO'] = merged_df['REF'].apply(parse_ref_info)

# 查询分数低于指定值的行
threshold = 90
filtered_df = merged_df[merged_df['REF_INFO'].apply(lambda x: any(score < threshold for score in x.values()))]

print("合并后的DataFrame:")
print(merged_df)
print("\n分数低于{}的行:".format(threshold))
print(filtered_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:32:34