1 回答

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
添加回答
舉報