Python 熊猫应用:自动列解包功能原型

Python 熊猫应用:自动列解包功能原型,python,pandas,apply,Python,Pandas,Apply,有没有一种方法可以让函数使用df.apply方法自动解包列 理想情况下,我正在寻找一种方法来定义函数,使其自动解包,而不考虑数据框中的列数,并允许我直接使用列名作为变量 差不多 def func(*row): print col1 or def func(**row) print col1 与df.apply(func,axis=1)一起使用 到目前为止我试过但不喜欢的东西 def func(row): col1, col2, col3 = row df[col

有没有一种方法可以让函数使用df.apply方法自动解包列

理想情况下,我正在寻找一种方法来定义函数,使其自动解包,而不考虑数据框中的列数,并允许我直接使用列名作为变量 差不多

def func(*row):
    print col1
or def func(**row)
    print col1
与df.apply(func,axis=1)一起使用

到目前为止我试过但不喜欢的东西

def func(row):
       col1, col2, col3 = row
df[col1,col2,col3]。应用(func,axis=1)

请举例说明:

import pandas as pd
import numpy as np

grid = np.random.rand(5,2)
df = pd.DataFrame(grid, columns =['col1', 'col2'])

鉴于此:我正在尝试编写一个函数

def multiply(x): 
###This function definition does not obviously work. What im asking is a way to achieve similar functionality without me explicitly unpacking x to col1 and col2###
    print col1
    print col2


df.apply(multiply, axis=1)

如果将
apply
与函数一起使用并且
axis=1
则可以通过列的名称访问这些列

def print_columns(row):

    print('Column 1:', row['col1'])
    print('Column 2:', row['col2'])

df.apply(print_columns, axis=1) 

从函数中的
变量中,可以按名称访问任何列。显然,请确保
返回要在输出列中设置的内容。

请添加输入数据和预期输出的示例。现在很难看出你想要达到什么目标。我用一个例子编辑了这些知识。使用这个例子,你是否尝试使用
x['col1']
。apply函数期望获得一个系列,如果轴=1,则它是一行,列是该系列的索引