如何使用单个列作为参数将函数应用于数据框中的多个列?
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)
我有一个包含 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)