0
0 комментариев

Подскажите элегантное решение передачи данных и pandas.DataFrame на клиента.

Проблема в том, что javascript не может распарсить float(‘nan’) который используется в pandas вместо None ( так же проблема с date(‘nan’) )

пример:

python:

    import pandas
    import json
    frame = pandas.DataFrame([{'one':1.0,'two':2.0},{'one':float('nan'),'two':3.0}])
 
    # >>> frame
    #    one  two
    # 0  1.0  2.0
    # 1  NaN  3.0
 
    # >>> frame.T.to_dict().values()
    # [{'two': 2.0, 'one': 1.0}, {'two': 3.0, 'one': nan}]
 
    json_frame = json.dumps( frame.T.to_dict().values() )
 
    # >>> json_frame
    # '[{"two": 2.0, "one": 1.0}, {"two": 3.0, "one": NaN}]'

js:

    json_frame = '[{"two": 2.0, "one": 1.0}, {"two": 3.0, "one": NaN}]'
    // "[{"two": 2.0, "one": 1.0}, {"two": 3.0, "one": NaN}]"
    JSON.parse(json_frame)
    // SyntaxError: Unexpected token N(…)

сейчас использую:

frame.where((pandas.notnull(frame)), None)

но хотелось бы pandas сказать что бы он по дефолту не использовал nan а выставлял None.


Добавить комментарий