如何使用lambda在计算函数中输入不断变化的列数,并在panda的数据帧中应用?

2024-10-01 11:19:41 发布

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

我每个月都有一个新的datasat,其中有许多可以更改的列

我想在dataframe中创建一个新列,其函数如下:

def calcul(**kwargs):

    [...]

    return result

我会这样创建我的专栏:

df['result'] = df.apply(lambda x: calcul(x['A1'], x['A2'], x['B1']), axis =  1)

但我也可以有这个案子:

df['result'] = df.apply(lambda x: calcul(x['A1'], x['A2'], x['A3'], x['B1', x['B2']), axis =  1)

我尝试根据数据创建一个参数列表,并使用sys.stdout.write()输入该列表,但它不起作用

liste = ["x[\'A1\']", "x[\'A2\']", "x[\'B1\']"]

df['result'] = df.apply(lambda x: calcul(sys.stdout.write(", ".join(liste))), axis =  1)

Tags: lambdaa2df列表a1stdoutsysresult
1条回答
网友
1楼 · 发布于 2024-10-01 11:19:41

IIUC您可以替换:

df['result'] = df.apply(lambda x: calcul(x['A1'], x['A2'], x['B1']), axis =  1)

与:

cols = ['A1', 'A2', 'B1']
df['result'] = df.apply(lambda x: calcul(*[x[c] for c in cols]), axis=1)

其中cols是更改的列列表

*解压列表,因此它相当于原始行

相关问题 更多 >