python 3.x - pandas.to_dict returns None mixed with nan -


i've stumbled upon minor problem pandas , it's method to_dict. have table i'm have equal number of identical columns in each row, let's looks that:

+----|----|----+ |col1|col2|col3| +----|----|----+ |val1|    |val3| |    |val2|val3| |val1|val2|    | +----|----|----+ 

when df.to_dict(orient='records') get:

[{      "col1":"val1"      ,"col2":nan      ,"col3":"val3"  }  ,{      "col1":none      ,"col2":"val2"      ,"col3":"val3"  }  ,{      "col1":"val1"      ,"col2":"val2"      ,"col3":nan }] 

notice nan's in columns , none's in other (always same, there appears no nan , none in same column)

and when json.loads(df.to_json(orient='records')) none , no nan's (which desired output).

like this:

[{      "col1":"val1"      ,"col2":none      ,"col3":"val3"  }  ,{      "col1":none      ,"col2":"val2"      ,"col3":"val3"  }  ,{      "col1":"val1"      ,"col2":"val2"      ,"col3":none }] 

i appreciate explanation why happens , if can controlled in way.

==edit==

according comments better first replace nan's none's, nan's not np.nan:

>>> = df.head().ix[0,60] >>> nan >>> type(a) <class 'numpy.float64'> >>> np.nan false >>> == np.nan false 

i think can replace, not possible control in to_dict:

l = [{      "col1":"val1"      ,"col2":np.nan      ,"col3":"val3"  }  ,{      "col1":none      ,"col2":"val2"      ,"col3":"val3"  }  ,{      "col1":"val1"      ,"col2":"val2"      ,"col3":np.nan }]  df = pd.dataframe(l).replace({np.nan:none}) print (df)    col1  col2  col3 0  val1  none  val3 1  none  val2  val3 2  val1  val2  none  print (df.to_dict(orient='records')) [{'col3': 'val3', 'col2': none, 'col1': 'val1'},   {'col3': 'val3', 'col2': 'val2', 'col1': none},   {'col3': none, 'col2': 'val2', 'col1': 'val1'}] 

Comments

Popular posts from this blog

inversion of control - Autofac named registration constructor injection -

verilog - Systemverilog dynamic casting issues -

ios - Change Storyboard View using Seague -