猿问

将 DataFrame Pandas 中的字符串转换为数字

背景: 我从 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         Location

0   Yes         ##.##,-###.##

1   Yes         ##.##,-###.##

输入:df.types


Output:

Bin          object

Location     object

dtype: object

感谢您的帮助。


ABOUTYOU
浏览 206回答 1
1回答

慕娘9325324

您需要将数字存储在单独的列中(我假设这些是纬度/经度坐标),以便将它们视为数字并按您期望的方式工作。理想情况下,您应该更改 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            city0   [41.8781, -87.6298] chicago1   [44.8141, 20.1234]  somewhereprint(df.dtypes)location    objectcity        objectdtype: object应用我们的转换:df[["lat", "long"]] = pd.DataFrame(df["location"].tolist(), columns=["lat", "long"])print(df)    location            city      lat       long0   [41.8781, -87.6298] chicago   41.8781   -87.62981   [44.8141, 20.1234]  somewhere 44.8141   20.1234print(df.dtypes)location     objectcity         objectlat         float64long        float64dtype: 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     long0  [41.8781, -87.6298]    chicago  41.8781 -87.62981   [44.8141, 20.1234]  somewhere  44.8141  20.1234print(df.dtypes)location     objectcity         objectlat         float64long        float64dtype: object
随时随地看视频慕课网APP

相关分类

Python
我要回答