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')