首页 > 解决方案 > TypeError:int64 类型的对象不是 JSON 可序列化的

问题描述

我有一个数据框,用于存储澳大利亚城市名称和每个城市的案例数。我正在尝试运行它;但是我得到一个错误

import folium
import pandas as pd

# Make a data frame with dots to show on the map
data = pd.DataFrame({
   'lat':[-58, 2, 145],
   'lon':[-34, 49, -38],
   'name':['Sydney', 'Melbourne', 'Brisbane'],
   'value':[4,3,2]

})
data

# Make an empty map
m = folium.Map(location=[20,0], tiles="Mapbox Bright", zoom_start=2)

for i in range(0,len(data)):
   folium.Circle(
      location=[data.iloc[i]['lon'], data.iloc[i]['lat']],
      popup=data.iloc[i]['name'],
      radius=data.iloc[i]['value']*10000,
      color='crimson',
      fill=True,`enter code here`
      fill_color='crimson'
   ).add_to(m)

m.save('mymap.html')

TypeError:int64 类型的对象不是 JSON 可序列化的

标签: pythondataframe

解决方案


似乎是 Folium 库的一个问题 - 一种快速的解决方案是将您的整数更改为浮点数 - 否则您可以尝试使用 numpy 库将您的整数从 int64 更改为 int8 等。

data = pd.DataFrame({
   'lat':[-58.0, 2.0, 145.0],
   'lon':[-34.0, 49.0, -38.0],
   'name':['Sydney', 'Melbourne', 'Brisbane'],
   'value':[4.0,3.0,2.0]

})

推荐阅读