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

Python函数中如何获取传入参数的变量名并赋值给DataFrame列

解决方法:获取传入DataFrame的外部变量名并添加为列

问题原因

你原代码里的f'{argument1=}'.split('=')[0]只能获取函数内部的参数名argument1,而不是外部传入的实际变量名,所以无法得到期望的string_i_want。


方法1:通过inspect模块解析调用上下文

这种方法可以自动提取调用时传入的变量名,但仅适用于直接传递变量的简单场景:

import pandas as pd
import inspect

string_i_want = pd.DataFrame([1, 2, 3, 4], columns=['column_name'])

def add_scenario_col(df):
    # 获取调用栈的上下文帧
    caller_frame = inspect.currentframe().f_back
    # 提取调用函数时的代码文本
    caller_code = inspect.getframeinfo(caller_frame).code_context[0].strip()
    # 解析出传入的变量名(仅支持直接传变量的情况)
    var_name = caller_code.split('(')[1].rstrip(')')
    
    df['squared'] = df['column_name'] ** 2
    df['scenario'] = var_name
    return df

add_scenario_col(string_i_want)

注意:如果调用时传入的是表达式(比如add_scenario_col(pd.read_csv("data.csv"))),这种方法会失效,因为没有明确的变量名可以提取。


方法2:显式传入数据集名称(推荐,更稳定)

这种方法虽然需要手动传入名称,但完全不依赖调用上下文,兼容性和可靠性更强:

import pandas as pd

string_i_want = pd.DataFrame([1, 2, 3, 4], columns=['column_name'])

def add_scenario_col(df, scenario_name):
    df['squared'] = df['column_name'] ** 2
    df['scenario'] = scenario_name
    return df

add_scenario_col(string_i_want, 'string_i_want')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:25:05