Как экспортировать фрейм данных в JSON со значениями NaN?

#python #pandas #dataframe

#python #панды #фрейм данных

Вопрос:

Я хочу преобразовать следующий фрейм данных в JSON с помощью groupby.

 ID,Location,Country,Latitude,Longitude,tide
8,WISMAR 2,DEU,53.8,11.4,69.0  
8,WISMAR 2,DEU,53.8,11.4,68.0  
10,SAN FRANCISCO,USA,37.8,-122.4,NaN  

Something like this:
[
{
    "Country": "DEU",
    "ID": 8,
    "Latitude": 53.8,
    "Location": "WISMAR 2",
    "Longitude": 11.4,
    "Tide-Data": [{"Tide": 69}, {"Tide": 68}]
},
{
    "Country": "USA",
    "ID": 10,
    "Latitude": 37.8,
    "Location": "SAN FRANCISCO",
    "Longitude": -122.4,
    "Tide-Data": []
}
  

Работает следующий код. Однако я хочу использовать пустой массив вместо [«Tide»: NaN], где плитка поля имеет значения NaN . Кто-нибудь может показать мне, как это сделать.

 j = (df.groupby(['ID','Location','Country','Latitude','Longitude'])
             .apply(lambda x: x[['tide']].to_dict('r'))
             .reset_index()
             .rename(columns={0:'Tide-Data'})
             .to_json(orient='records'))
  

Большое спасибо.

Ответ №1:

Вы были почти там, просто нужно добавить dropna() :

 j = (df.groupby(['ID', 'Location', 'Country', 'Latitude', 'Longitude'])
       .apply(lambda x: x[['tide']].dropna().to_dict('r'))
       .reset_index()
       .rename(columns={0: 'Tide-Data'})
       .to_json(orient='records'))