Closed
Description
Using the following:
csv_str = """u1,u2,u3,d1,d2,d3,d4
Good Things,C,,1,1,1,1
Good Things,R,,1,1,1,1
Bad Things,C,,1,1,1,1
Bad Things,T,,1,1,1,1
Okay Things,N,B,1,1,1,1
Okay Things,N,D,1,1,1,1
Okay Things,B,,1,1,1,1
Okay Things,D,,1,1,1,1"""
d_nan = pd.read_csv(StringIO.StringIO(csv_str), na_filter=False,index_col=[0,1,2])
d_no_nan = pd.read_csv(StringIO.StringIO(csv_str), na_filter=False,index_col=[0,1,2],na_values=[], keep_default_na=False)
If I have the following DataFrame:
In [63]: d_nan
Out[63]:
d1 d2 d3 d4
u1 u2 u3
Good Things C NaN 1 1 1 1
R NaN 1 1 1 1
Bad Things C NaN 1 1 1 1
T NaN 1 1 1 1
Okay Things N B 1 1 1 1
D 1 1 1 1
B NaN 1 1 1 1
D NaN 1 1 1 1
and then I try to use loc
on the index:
In [64]: d_nan.loc["Good Things"]
Out[64]:
d1 d2 d3 d4
u2 u3
C NaN 1 1 1 1
R NaN 1 1 1 1
When I try to loc
the last level, a mysterious D appears:
In [65]: d_nan.loc["Good Things"].loc['C']
Out[65]:
d1 d2 d3 d4
u3
D 1 1 1 1
if d instead looks like (no NaNs):
In [67]: d_no_nan
Out[67]:
d1 d2 d3 d4
u1 u2 u3
Good Things C 1 1 1 1
R 1 1 1 1
Bad Things C 1 1 1 1
T 1 1 1 1
Okay Things N B 1 1 1 1
D 1 1 1 1
B 1 1 1 1
D 1 1 1 1
then I have no problems:
In [68]: d_no_nan.loc["Good Things"].loc['C']
Out[68]:
d1 d2 d3 d4
u3
1 1 1 1