#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'))