python中函数的多个输入/输出参数

2024-09-29 23:23:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了以下函数,将带有unit(ufrom)的值(col)转换成另一个unit(uto):

def convert(row, col , ufrom, uto):
    convRow = convDF[(convDF.from == row[ufrom]) & (convDF.to == uto)]
    val = row[col] / convRow.factor
    return(val, uto)

convDF是一个包含多个单元及其转换因子的数据帧。我把这个函数叫做:

^{pr2}$

convert函数获取当前行、包含需要转换的值的列、源单元列以及目标单元。到目前为止,它是完美的。在

如您所见,我调用了这个函数三次,但我想知道是否可以调用一次并传递所有三个参数(Width、Length、Hight)并转换它们,因为它们有相同的列引用它们的单位(unit)和相同的目标单位(uto)。所以我希望函数能够处理单个值和多个值。 最后,这个

df.at[idx, ['Width', 'Unit']] = convert(row,'Width', 'Unit', 'MM')

应该和这个一样好

df.at[idx, ['Width','Length','Hight', 'Unit']] = convert(row,['Width','Length','Hight'],'Unit', 'MM')

尝试使用*-语法传递1:n个参数,但如何更改convert函数以给出多个或单个结果?在

谢谢你!在


Tags: 函数convertunitcolvalwidthlength单元
1条回答
网友
1楼 · 发布于 2024-09-29 23:23:23

您可以让函数将列列表作为参数,然后根据列列表中的内容返回列表。例如

def convert(row, cols , ufrom, uto):
    values=[]
    for col in cols:
        convRow = convDF[(convDF.from == row[ufrom]) & (convDF.to == uto)]
        values.append(row[col] / convRow.factor) 
    values.append(ufrom) 
    return values

然后你可以这样称呼它

^{pr2}$

或者,对于一列,只需有一个包含一个元素的列表:

df.at[idx, ['Width', 'Unit']] = convert(row,['Width'],'Unit', 'MM')

相关问题 更多 >

    热门问题