The apply method on a groupby object appears to send all arguments to the applied function. As in, if you try to do df.groupby(level='dt').apply(func, axis=1), the axis=1 argument is passed to func rather than being parsed by apply as intended. The behavior is correct, however, in the DataFrame.apply method.
Comment From: jreback
See docs
you are probably looking to do:
df.groupby(level='dt',axis=1).apply(func)