2014-03-26 58 views
2

熊猫新手和我有以下问题: 我想将my_func(一个自定义创建的函数)应用于数据框的每一行。调试熊猫数据框应用

res = df.apply(lambda x: my_func(x, par1, par2) 

当我调试,我把一个断点我的函数的第一行定义为:

def my_func(myinput, par1): 
    (...) 

如果我评估我的输入变量myinput我将会得到整个数据帧(DF)。 我只是期待df instrad的第一行..我是否错过了什么?

非常感谢

问候

回答

1

你需要设置axis=1apply

res = df.apply(lambda x: my_func(x, par1, par2), axis=1) 

online docs指出axis=0是逐列,而axis=1是逐行

你可以通过该行:

res = df.apply(lambda row: my_func(row), axis=1) 

,然后重新定义你的函数:

def my_func(row): 
    # do something with col1 
    row['col1'] = row['col1'] * 2 
    row['col2'] = row['col2'] + 2 
    # .... etc 
+2

如果你只是路过的行中,你可以做'df.apply(my_func,并将,轴= 1)'。另外,您可以使用'args' kwarg或'lambda'来传入更多参数。 'apply(my_funx,axis = 1,args =(par1,par2))'或'apply(lambda row:my_func(row,par1,par2),axis = 1)' –

+0

@PaulH是的,猫 – EdChum