亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 DataFrame Pandas 中的字符串轉換為數字

將 DataFrame Pandas 中的字符串轉換為數字

ABOUTYOU 2023-08-15 18:35:28
背景: 我從 Google 地圖中獲取了點列表,提取了 csv 數據。在 Pandas 中清理它,并將其導出為 JSON 文件。(用于出口的使用記錄)問題: 坐標是字符串。這是有道理的,因為最初,坐標與 url 綁定在一起Example: https://www.google.com/maps/search/{coordinates}我使用替換功能清除文本,只保留坐標。有沒有辦法使我的位置列中的值成為數字類型并將它們放入列表中。我導出的 JSON文件的示例模擬數據如下:[{      "Bin":"Yes",      "Location":"##.##,-###.##"   },我試圖清理我的數據,如下例所示我嘗試建模的GeoJSON文件示例[{    location: [41.8781, -87.6298],    city: "Chicago"  },目標: 我正在嘗試制作一個自定義地圖以供在 Mapbox 中使用我的數據框的示例模型    Bin         Location0   Yes         ##.##,-###.##1   Yes         ##.##,-###.##輸入:df.typesOutput:Bin          objectLocation     objectdtype: object感謝您的幫助。
查看完整描述

1 回答

?
慕娘9325324

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


查看完整回答
反對 回復 2023-08-15
  • 1 回答
  • 0 關注
  • 247 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號