Pandas удаляет нулевые значения, когда to_json

У меня на самом деле есть панда данных и я хочу сохранить его в формате json. Из документов pandas говорится:

Примечание. NaN, NaT и None будут преобразованы в объекты с нулевым и datetime, которые будут преобразованы на основе параметров date_format и date_unit

Затем, используя records ориентации Ori, у меня есть что-то вроде этого

 [{"A":1,"B":4,"C":7},{"A":null,"B":5,"C":null},{"A":3,"B":null,"C":null}] 

Возможно ли это:

 [{"A":1,"B":4,"C":7},{"B":5},{"A":3}]' 

спасибо

2 Solutions collect form web for “Pandas удаляет нулевые значения, когда to_json”

Следующее приближается к тому, что вы хотите, по существу мы создаем список значений, отличных от NaN, а затем вызываем to_json :

 In [136]: df.apply(lambda x: [x.dropna()], axis=1).to_json() Out[136]: '{"0":[{"a":1.0,"b":4.0,"c":7.0}],"1":[{"b":5.0}],"2":[{"a":3.0}]}' 

здесь необходимо создать список, иначе он попытается выровнять результат с вашей исходной формой df, и это вернет значения NaN которых вы хотите избежать:

 In [138]: df.apply(lambda x: pd.Series(x.dropna()), axis=1).to_json() Out[138]: '{"a":{"0":1.0,"1":null,"2":3.0},"b":{"0":4.0,"1":5.0,"2":null},"c":{"0":7.0,"1":null,"2":null}}' 

также вызывающий list по результату dropna будет транслировать результат с формой, например, заполнение:

 In [137]: df.apply(lambda x: list(x.dropna()), axis=1).to_json() Out[137]: '{"a":{"0":1.0,"1":5.0,"2":3.0},"b":{"0":4.0,"1":5.0,"2":3.0},"c":{"0":7.0,"1":5.0,"2":3.0}}' 

У меня такая же проблема, и моим решением является использование json- модуля вместо pd.DataFrame.to_json ()

Мое решение

  1. падение значения NaN при преобразовании DataFrame в dict, а затем
  2. конвертировать dict в json с помощью json.dumps ()

Вот код:

 import pandas as pd import json from pandas import compat def to_dict_dropna(df): return {int(k): v.dropna().astype(int).to_dict() for k, v in compat.iteritems(df)} json.dumps(to_dict_dropna(df)) 
  • pandas: конвертировать datetime в конец месяца
  • Сканирование сканирующего значения Pandas: ix или iat?
  • Ошибка Pandas: объект DataFrame не имеет атрибута 'loc'
  • Как удалить круглые скобки и все данные с помощью Pandas / Python?
  • Как переименовать записи в pandas dataframe?
  • Как сохранить заголовки столбцов кадра данных после предварительной обработки в scikit-learn
  • Как фильтровать по году и кварталу в пандах
  • «gcc» не удалось во время создания панд на AWS Elastic Beanstalk
  • Python - лучший язык программирования в мире.