为了账号安全,请及时绑定邮箱和手机立即绑定

将 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 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信