Why isn't my Pandas 'apply' function referencing multiple columns working? [closed] Why isn't my Pandas 'apply' function referencing multiple columns working? [closed] python python

Why isn't my Pandas 'apply' function referencing multiple columns working? [closed]


Seems you forgot the '' of your string.

In [43]: df['Value'] = df.apply(lambda row: my_test(row['a'], row['c']), axis=1)In [44]: dfOut[44]:                    a    b         c     Value          0 -1.674308  foo  0.343801  0.044698          1 -2.163236  bar -2.046438 -0.116798          2 -0.199115  foo -0.458050 -0.199115          3  0.918646  bar -0.007185 -0.001006          4  1.336830  foo  0.534292  0.268245          5  0.976844  bar -0.773630 -0.570417

BTW, in my opinion, following way is more elegant:

In [53]: def my_test2(row):....:     return row['a'] % row['c']....:     In [54]: df['Value'] = df.apply(my_test2, axis=1)


If you just want to compute (column a) % (column b), you don't need apply, just do it directly:

In [7]: df['a'] % df['c']                                                                                                                                                        Out[7]: 0   -1.132022                                                                                                                                                                    1   -0.939493                                                                                                                                                                    2    0.201931                                                                                                                                                                    3    0.511374                                                                                                                                                                    4   -0.694647                                                                                                                                                                    5   -0.023486                                                                                                                                                                    Name: a


Let's say we want to apply a function add5 to columns 'a' and 'b' of DataFrame df

def add5(x):    return x+5df[['a', 'b']].apply(add5)