如何从数据帧调用函数的位置参数?
How to call positional arguments for a function from a dataframe?
我正在尝试 运行 我使用输入变量的大量不同变体创建的函数。最好是,我能够将 excel 文件作为数据帧读取,每行在列中有 3 个调用参数,然后该函数在 for 循环中执行,调用每行的每个参数。我的代码目前如下所示:
def func1(x,y,z):
a=x*y*z
return a
data = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
df = pd.DataFrame(data, index=[0, 1, 2], columns=['a', 'b', 'c'])
counter = 1
for row in df:
a = func1(row)
df2 = pd.DataFrame(a, index=[0], columns=['a'])
df2.to_excel("Data" + counter + '.xlsx')
counter = counter +1
然而,这会产生错误消息“func1() 缺少 2 个必需的位置参数:'y' 和 'z'”。如何有效地将列值用作调用参数?
试试这个然后修改以适合您的任务
def test(x):
a= x['a']* x['b']* x['c']
return a
df.apply(test, axis= 1)
#option2
df.apply(lambda x: x['a']* x['b']* x['c'] ,axis= 'columns')
固定码:
def func1(x,y,z):
a=x*y*z
print(a)
data = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
df = pd.DataFrame(data, index=[0, 1, 2], columns=['a', 'b', 'c'])
counter = 1
for row in df.values: # <- iterate over values
a = func1(*row) # <- positional arguments
df2 = pd.DataFrame(a, index=[0], columns=['a'])
df2.to_excel(f"Data{counter}.xlsx") # <- concatenate int and str raise an error
counter = counter +1
我正在尝试 运行 我使用输入变量的大量不同变体创建的函数。最好是,我能够将 excel 文件作为数据帧读取,每行在列中有 3 个调用参数,然后该函数在 for 循环中执行,调用每行的每个参数。我的代码目前如下所示:
def func1(x,y,z):
a=x*y*z
return a
data = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
df = pd.DataFrame(data, index=[0, 1, 2], columns=['a', 'b', 'c'])
counter = 1
for row in df:
a = func1(row)
df2 = pd.DataFrame(a, index=[0], columns=['a'])
df2.to_excel("Data" + counter + '.xlsx')
counter = counter +1
然而,这会产生错误消息“func1() 缺少 2 个必需的位置参数:'y' 和 'z'”。如何有效地将列值用作调用参数?
试试这个然后修改以适合您的任务
def test(x):
a= x['a']* x['b']* x['c']
return a
df.apply(test, axis= 1)
#option2
df.apply(lambda x: x['a']* x['b']* x['c'] ,axis= 'columns')
固定码:
def func1(x,y,z):
a=x*y*z
print(a)
data = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
df = pd.DataFrame(data, index=[0, 1, 2], columns=['a', 'b', 'c'])
counter = 1
for row in df.values: # <- iterate over values
a = func1(*row) # <- positional arguments
df2 = pd.DataFrame(a, index=[0], columns=['a'])
df2.to_excel(f"Data{counter}.xlsx") # <- concatenate int and str raise an error
counter = counter +1