gpt4 book ai didi

python - 在 python 中,使用函数的参数重命名变量

转载 作者:行者123 更新时间:2023-11-28 20:12:31 24 4
gpt4 key购买 nike

我正在创建一个函数。该函数的一个输入是 Pandas 数据框,其任务之一是对该数据框的两个变量进行一些操作。这两个变量不是固定的,我希望使用参数作为函数 fun 的输入来自由确定它们。

例如,假设在某个时刻我想使用的变量是“var1”和“var2”(但在另一个时刻,我可能想使用其他两个变量)。假设这些变量取值 1、2、3、4,我想减少 df 做 var1 == 1 和 var2 == 1。我的函数是这样的

def fun(df , var = ['input_var1', 'input_var2'] , val):
df = df.rename(columns={ var[1] : 'aux_var1 ', var[2]:'aux_var2'})

# Other operations
df = df.loc[(df.aux_var1 == val ) & (df.aux_var2 == val )]
# end of operations

# recover
df = df.rename(columns={ 'aux_var1': var[1] ,'aux_var2': var[2]})
return df

当我使用 fun 函数时,出现错误

fun(df, var = ['var1','var2'], val = 1)
IndexError: list index out of range

其实我想做其他更复杂的操作,为了不引申,我没有描述这些操作。也许上面这个简单的例子有一个不需要重命名变量的解决方案。但也许这个解决方案不适用于我真正想做的操作。所以首先,我一定要更正重命名变量时的错误。如果您想提供另一个更优雅的不需要重命名的解决方案,我也很感激,但如果您除了优雅的解决方案外,还提供有关重命名的解决方案,我将非常感激。

最佳答案

Python 列表是零索引的,即第一个元素索引为 0。只需更改行:

df = df.rename(columns={  var[1] : 'aux_var1 ', var[2]:'aux_var2'})

df = df.rename(columns={ 'aux_var1': var[1] ,'aux_var2': var[2]})

df = df.rename(columns={  var[0] : 'aux_var1 ', var[1]:'aux_var2'})

df = df.rename(columns={ 'aux_var1': var[0] ,'aux_var2': var[1]})

分别

关于python - 在 python 中,使用函数的参数重命名变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58152853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com