如何从键中提取经度和经度?

Posted

技术标签:

【中文标题】如何从键中提取经度和经度?【英文标题】:How to extract longitude and langitude from keys? 【发布时间】:2022-01-23 15:08:59 【问题描述】:

我的数据框有以下设置:

df = pd.DataFrame(
        data='place_id': ['AXRT'],
              'geometry': ['location': 'lat': 51.112278, 'lng': 20.747889,
                            'viewport': 'northeast': 'lat': 51.11367217989272,
                                                       'lng': 20.74911952989272,
                                         'southwest': 'lat': 51.11097252010727,
                                                       'lng': 20.74641987010727])

现在我试图在列中包含place_idlatlng

我的代码是:

out = df[['place_id']].join(df['geometry'].apply(pd.Series)['location'].apply(pd.Series))

但不幸的是,什么都没有发生。我还有我的核心专栏,包括整个"geometry"

【问题讨论】:

我已经尝试过你上面的代码并且它有效。请看输出:ibb.co/nPt26H6 感谢杰。不幸的是,由于某种原因,它不适用于以下链接下我更大的数据框:docs.google.com/spreadsheets/d/… 我真的不明白,虽然从不同的角度尝试过-:) 我收到一个错误:KeyError: 'location' 我明白了。请看我的回答。 【参考方案1】:

与使用pd.DataFrame() 创建数据框不同,当您从文件中读取数据时,df['geometry'] 包含dict 的字符串表示形式。

例如

"'location': 'lat': 51.112278, 'lng': 20.747889, 'viewport': '东北':'纬度':51.11367217989272,'lng':20.74911952989272, '西南': 'lat': 51.11097252010727, 'lng': 20.74641987010727"

因此,您需要使用ast.literal_eval() 将其转换为dict

import ast

df['geometry'] = df['geometry'].apply(lambda x : ast.literal_eval(x))
out = df[['place_id']].join(df['geometry'].apply(pd.Series)['location'].apply(pd.Series))

输出:

>         place_id                    lat         lng
>     0   ChIJ3-pjozg3GEcRimBdVlmWd3k 51.112278   20.747889
>     1   ChIJiR-APhQ3GEcR-57__9ZfvU0 51.131246   20.763574
>     2   ChIJNyAvWs05GEcRVljgfRAvPGY 51.106695   20.793692
>     3   ChIJPQWT5Lo5GEcR_czWyMwzGMg 51.112206   20.830048
>     4   ChIJI2kwRsE5GEcRUJfB6O2QWa0 51.102545   20.785231
>     5   ChIJNyxWu7k5GEcRUhZfdmNctD8 51.113777   20.823140
>     6   ChIJjeNBPls3GEcR_hfosXw5KAQ 51.100790   20.751682
>     7   ChIJp2Mxm2E5GEcReEsSfRqfunM 51.098479   20.836110
>     8   ChIJ3aRDzrE5GEcR-hMBvF46sIQ 51.116702   20.835246

【讨论】:

非常感谢!现在像魅力一样工作-:) @Jaroslaw 欢迎您,伙计

以上是关于如何从键中提取经度和经度?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MKMapItem 中提取纬度/经度坐标

如何从 CLLocation 变量中提取经度和纬度?

如何从谷歌地图自动完成中提取纬度和经度

如何使用javascript根据纬度和经度值设置计算区域?

如何使用 R 中的纬度/经度边界从 netCDF 文件中获取子集

GeoCoder 使用地址获取经度和纬度