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)