1 回答
![?](http://img1.sycdn.imooc.com/54584c5e0001491102200220-100-100.jpg)
TA贡献1783条经验 获得超4个赞
您需要将数字存储在单独的列中(我假设这些是纬度/经度坐标),以便将它们视为数字并按您期望的方式工作。理想情况下,您应该更改 json 清理代码以返回如下所示的结果,然后再将其读入数据帧:
{
lat: 41.8781,
long: -87.6298,
city: "Chicago"
}
但是,一旦它位于数据框中,您也可以解决这个问题:
json_data = [
{"location": [41.8781, -87.6298], "city": "chicago"},
{"location": [44.8141, 20.1234], "city": "somewhere"}
]
df = pd.DataFrame.from_records(json_data)
print(df)
location city
0 [41.8781, -87.6298] chicago
1 [44.8141, 20.1234] somewhere
print(df.dtypes)
location object
city object
dtype: object
应用我们的转换:
df[["lat", "long"]] = pd.DataFrame(df["location"].tolist(), columns=["lat", "long"])
print(df)
location city lat long
0 [41.8781, -87.6298] chicago 41.8781 -87.6298
1 [44.8141, 20.1234] somewhere 44.8141 20.1234
print(df.dtypes)
location object
city object
lat float64
long float64
dtype: object
我们刚刚所做的就是告诉 pandas 我们的“位置”列实际上有 2 个值,并且它们应该位于单独的列中。我们扩展它并将其添加回原始数据框。
如果出于某种原因,pandas 不会自动将您的纬度/经度列解析为浮点数,您可以使用将pd.to_numeric对象列转换为整数/浮点数据类型。
df["lat"] = pd.to_numeric(df["lat"])
df["long"] = pd.to_numeric(df["long"])
print(df)
location city lat long
0 [41.8781, -87.6298] chicago 41.8781 -87.6298
1 [44.8141, 20.1234] somewhere 44.8141 20.1234
print(df.dtypes)
location object
city object
lat float64
long float64
dtype: object
添加回答
举报