python - 在对我的地理位置字段是否有效的测试进行矢量化测试的过程中,我做错了什么?
问题描述
我正在调用地理定位 API,并将结果转换为 DataFrame,如下所示:
results = geolocator.lookup(ip_list)
results
:
[{
query: "0.0.0.0",
coordinates: { lat: "0", lon: "0" }
}, ...]
因此,我们查询了 0.0.0.0,API 为 lat/long 返回了“0”,表示显然无法进行地理定位的 IP。与 False 值或其他东西相反的奇怪处理方式,但我们可以使用它。
到数据框:
df = pd.DataFrame(results)
但是等等,这导致那些“坐标”字段成为 DataFrame 中的字典,我可能是 Panda 初学者,但我知道我可能希望将这些字段存储为 DataFrames,而不是 dicts,所以我们可以矢量化。
所以我做了:
for result in results:
result["coordinates"] = pd.DataFrame(result["coordinates"], index=[0])
df = pd.DataFrame(results)
不知道index=[0]
那里有什么,但没有它我会得到一个错误,所以我就这样做了。在这里停下来,告诉我如果我到目前为止做得不好,为什么我错了。我是 Python 的新手,超过 2D 的 DataFrame 难以可视化。
然后我想处理并添加一个带有或基于矢量化测试df
的“地理定位”列,并尝试这样做:True
False
def is_geolocated(coordinate_df):
# yes the API returned string coords
lon_zero = np.equal(coordinate_df["lon"], "0") # error here
lat_zero = np.equal(coordinate_df["lat"], "0")
return lon_zero & lat_zero
df["geolocated"] = is_mappable(df["coordinates"])
但这会引发 KeyError “lon”。
我是否走在正确的轨道上,如果没有,我应该如何设置?
解决方案
一般来说,我同意你的观点,字典是存储纬度/经度值的不好方法。发生这种情况是由于 pd.DataFrame() 的工作方式,因为它将获取键查询和坐标,其中键坐标的值只是一个纬度/经度值的字典。
您可以通过例如将每一行定义为一个元组,将整个数据框定义为这些元组的列表来规避整个问题。然后,您可以比较 lat 和 lon 值是否都为零,并将其作为新列返回。
import pandas as pd
# Test dataset
results = [{
'query': "0.0.0.0",
'coordinates': { 'lat': "0", 'lon': "0" }
},
{
'query': "0.0.0.0",
'coordinates': { 'lat': "1", 'lon': "1" }
}]
df = pd.DataFrame([(result['query'], result['coordinates']['lat'], result['coordinates']['lon']) for result in results])
df.columns = ['Query', 'Lat', 'Lon']
df['Geolocated'] = ((df['Lat'] == '0') & (df['Lon'] == '0'))
df.head()
Query Lat Lon Geolocated
0 0.0.0.0 0 0 True
1 0.0.0.0 1 1 False
在这段代码中,我使用列表推导来构建元组列表,并将“地理定位”列定义为一个序列,该序列来自行的纬度和经度值的比较。
推荐阅读
- sql - SQL需要10分钟内发生的事件列表的最小时间实例和总持续时间
- c# - C# Where 子句不会从可为空的布尔值中返回空值
- c# - 作为 Debug Web API 发布的 Release 程序集的性质是什么
- swift - 如何快速设置 UIButton 的高度锚点?
- sql-server - 设置为零时的 Int 变量表现奇数
- search - Solr - 如何以复合“word-1,word-1 + word-2,word-1 + word-2 ... word-n”的方式标记字符串中的单词?
- reactjs - 在 React 中向 Google 地图添加自定义样式
- r - R环境和Mac的权限问题
- sql - 一个数据透视查询中的两个操作
- python - 返回上一页文档 selenium python