如何使用单个列作为参数将函数应用于数据框中的多个列?

How can I apply a function to many columns in a dataframe using a single column as an argument?

我有一个包含 100 多列的数据框,我需要对其应用函数,但我不知道如何将第一列作为参数传递。

例如,如果我的 table 是:

df = pd.DataFrame({'argument':[1,2,0.5],
                   'day1':[4,5,6],
                   'day2':[5,1,2]})

   argument day1 day2 day3...
0  1.0      4    5
1  2.0      5    1
2  0.5      6    2

我有一个这样的函数(我的要复杂得多,这只是为了举例):

def function (i,j):
    return i * j

我希望我的输出是:

   argument day1 day2 day3...
0  1.0      4    5
1  2.0      10   2
2  0.5      3    1

这让我得到了非常奇怪的结果,有人知道我做错了什么吗?谢谢!

def function (i,j):
    return i- j
df = df.apply(function, axis=1, j=df['argument'])

首先,你的轴方向错误,应该设置为 0 而不是 1。

其次,如果您像那样应用您的函数,它会将函数应用到您的参数列。而且它不会和你想要的一样。

所以,把你的代码改成这样

import pandas as pd

def function (i,j):
    return i * j

df = pd.DataFrame({'argument':[1,2,0.5],
                   'day1':[4,5,6],
                   'day2':[5,1,2]})

df2 = df.iloc[:,-2:].apply(function,axis=0,j=df['argument'])
df.iloc[:,-2:] = df2
print(df)