Panel.fillna() 

should accept

(axis= [0, 1, 2] or ['items', 'major_axis', 'minor_axis'])

as an argument. Right now it essentially defaults to

(axis='major_axis')

Comment From: jreback

the axis parameter only matters if your are ffill or bfill or interpolating on a particular axis

this is fixed in the series-inherit-ndframe (slated for 0.12), #3482 so will leave open for that

Comment From: joeb1415

Related: Panel.fillna(method='bfill') loses the items name:

from pandas import Panel, date_range
from numpy.random import randn

p = Panel(randn(2, 5, 4), items=['Item1', 'Item2'], major_axis=date_range('1/1/2000', periods=5), minor_axis=['A', 'B', 'C', 'D'])

p.items.name = 'items'
p.major_axis.name = 'major'
p.minor_axis.name = 'minor'
print(p.items.name, p.major_axis.name, p.minor_axis.name)

p = p.fillna(method='bfill')
print(p.items.name, p.major_axis.name, p.minor_axis.name)

Returns:

('items', 'major', 'minor')
(None, 'major', 'minor')

Not so with method=None

p = p.fillna(0)
print(p.items.name, p.major_axis.name, p.minor_axis.name)

Returns:

('items', 'major', 'minor')
('items', 'major', 'minor')

Also not so with DataFrame.fillna() by any method:

from pandas import DataFrame

df = DataFrame(randn(2, 5), index=['Item1', 'Item2'], columns=date_range('1/1/2000', periods=5))

df.index.name = 'index'
df.columns.name = 'columns'
print(df.index.name, df.columns.name)

df = df.fillna(method='bfill')
print(df.index.name, df.columns.name)

Returns:

('index', 'columns')
('index', 'columns')