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

如何判断DataFrame名称包含另一DataFrame列中存储的指定目标字符串

解决方案

核心思路

str.contains是Pandas Series/列专属的字符串匹配方法,不能直接作用于DataFrame对象本身的变量名。你需要先提取变量名的字符串,再判断该字符串是否包含目标target列表中的值即可。

推荐实现方案(避免动态变量,更易维护)

不推荐用vars()动态生成变量,后续很难管理,建议用字典统一存储所有target对应的DataFrame:

import pandas as pd

# 你的原有示例代码
Model_rad = {'model_uid': [1, 2, 3, 4, 5, 6, 7, 8],
               'pathology': ['nsclc', 'nsclc', 'nsclc', 'covid', 'glioma', 'meningioma', 'gbm', 'breast-cancer'],
               'purpose': ['', '', '', '', '', '', '', ''],
               'target': ['lung', 'tum', 'tum', 'lung', 'tum', 'tum', 'tum', 'tum'],
               'version_availability': ['v0.0', 'v1.0', '', 'v1.0', 'v1.0', 'v1.0', '', '']
               } 
Model_rad= pd.DataFrame(Model_rad)
target_unique = Model_rad['target'].unique().tolist() 

# 用字典存储所有ref dataframe,代替动态变量
ref_dfs = {}
for target in target_unique:
    ref_dfs[f"{target}_ref_series_from_rad"] = pd.DataFrame()

# 拿到可用的target列表
patho_and_target_available = Model_rad[Model_rad['version_availability'] != '']
available_targets = patho_and_target_available['target'].unique().tolist()

# 遍历所有ref df判断名称匹配
for df_name, df in ref_dfs.items():
    # 判断df名称是否包含任一可用target
    if any(target in df_name for target in available_targets):
        # 这里写你要执行的条件操作
        print(f"匹配到目标df:{df_name},执行对应操作")
        # 示例操作:给df加一列标识
        df['is_matched'] = True

兼容现有vars()写法的方案

如果你一定要保留之前用vars()生成动态变量的写法,可以用如下方式实现判断:

# 拿到可用target列表
patho_and_target_available = Model_rad[Model_rad['version_availability'] != '']
available_targets = patho_and_target_available['target'].unique().tolist()

# 遍历所有target,判断对应的df名称是否符合要求
for target in target_unique:
    df_name = f"{target}_ref_series_from_rad"
    # 判断当前target是否在可用列表里
    if target in available_targets:
        # 拿到对应的df对象
        current_df = vars()[df_name]
        # 这里写你要执行的条件操作
        print(f"匹配到目标df:{df_name},执行对应操作")

小提示:如果想用str.contains方法实现匹配

可以把变量名字符串转成Pandas Series后调用str.contains,多个匹配值用|拼接即可:

if pd.Series([df_name]).str.contains('|'.join(available_targets)).iloc[0]:
    # 执行对应操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 03:24:03