python - 在 DataFrame Pandas 中将字符串转换为数字
问题描述
背景: 我从谷歌地图中获得了一个点列表,提取数据为 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 中使用
我的DataFrame的样机示例
Bin Location
0 Yes ##.##,-###.##
1 Yes ##.##,-###.##
输入:df.types
Output:
Bin object
Location object
dtype: object
感谢您的帮助。
解决方案
您需要将位置中的数字存储为单独的列(我假设这些是纬度/经度坐标),以便将它们视为数字并按预期工作。理想情况下,您应该更改 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 不会自动将您的 lat/long 列解析为浮点数,您可以使用pd.to_numeric
将对象列转换为 integer/float dtypes。
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
推荐阅读
- php - 如何在 laravel5.2 中设置基本路径?
- angular - 如何在angular2中获取http get请求发送域
- r - 如何在闪亮的应用程序中的fluidRow内的框元素中显示悬停
- angular - 角度服务在组件中的功能内使用
- postgresql - postgres`插入冲突更新`多列
- ios - 在 iOS xamarin 中将视频从 mov 转换为 MP4
- javascript - react-mapbox-gl 集群不工作
- c# - 是否可以从 aspnet 核心 Web 应用程序生成 .msi 包?
- algorithm - K近邻算法的分类
- amazon-web-services - 如何将 SSL 证书安装到 kubernetes 中的 aws 负载均衡器?