将 gps 坐标映射到人口普查区 Python
Mapping gps coordinates with census tract Python
我还没有找到解决我正在做的一个小项目的困惑的答案。
我的目标是在我的数据框中匹配人口普查块 ID / block_fips 到 lat/lon 对。
我之前没有使用 API 来补充 Python 中的数据。
这是经纬度坐标数据集的片段:
import pandas as pd
df = pd.DataFrame({'lat': [40.760659, 40.768254, 40.761573], 'lon': [-73.980420, -73.988639, -73.972628]})
print(df)
我遇到了人口普查转换 API https://www.fcc.gov/census-block-conversions-api。如果使用区域 API,我如何 (1) 获取然后 (2) 将“block_fips”匹配到第一个 lat/lon 对,在本例中使用 [= 的“360610131001003” 32=] 在 Anaconda 环境中的 Jupyter notebook 中。
我希望的输出是:
dfcensus = pd.DataFrame({'lat': [40.760659, 40.768254, 40.761573], 'lon': [-73.980420, -73.988639, -73.972628], 'block': [360610131001003, 360610139003000, 360610112021004]})
print(dfcensus)
非常感谢任何输入!
- 逐行调用 API 是最简单的方法
- API 使用简单,使用 requests 构建 URL 参数记录在 API
- 只需将其分配回数据框中的新列
- 这是 运行 在 jupyter 实验室环境中
import requests
url = "https://geo.fcc.gov/api/census/block/find"
df = pd.DataFrame({"lat": [40.760659, 40.768254, 40.761573],
"lon": [-73.980420, -73.988639, -73.972628],})
df.assign(
block=df.apply(
lambda r: requests.get(
url, params={"latitude": r["lat"], "longitude": r["lon"], "format": "json"}
).json()["Block"]["FIPS"],
axis=1,
)
)
lat
lon
block
0
40.7607
-73.9804
360610131001003
1
40.7683
-73.9886
360610139003000
2
40.7616
-73.9726
360610112021004
我还没有找到解决我正在做的一个小项目的困惑的答案。
我的目标是在我的数据框中匹配人口普查块 ID / block_fips 到 lat/lon 对。
我之前没有使用 API 来补充 Python 中的数据。
这是经纬度坐标数据集的片段:
import pandas as pd
df = pd.DataFrame({'lat': [40.760659, 40.768254, 40.761573], 'lon': [-73.980420, -73.988639, -73.972628]})
print(df)
我遇到了人口普查转换 API https://www.fcc.gov/census-block-conversions-api。如果使用区域 API,我如何 (1) 获取然后 (2) 将“block_fips”匹配到第一个 lat/lon 对,在本例中使用 [= 的“360610131001003” 32=] 在 Anaconda 环境中的 Jupyter notebook 中。
我希望的输出是:
dfcensus = pd.DataFrame({'lat': [40.760659, 40.768254, 40.761573], 'lon': [-73.980420, -73.988639, -73.972628], 'block': [360610131001003, 360610139003000, 360610112021004]})
print(dfcensus)
非常感谢任何输入!
- 逐行调用 API 是最简单的方法
- API 使用简单,使用 requests 构建 URL 参数记录在 API
- 只需将其分配回数据框中的新列
- 这是 运行 在 jupyter 实验室环境中
import requests
url = "https://geo.fcc.gov/api/census/block/find"
df = pd.DataFrame({"lat": [40.760659, 40.768254, 40.761573],
"lon": [-73.980420, -73.988639, -73.972628],})
df.assign(
block=df.apply(
lambda r: requests.get(
url, params={"latitude": r["lat"], "longitude": r["lon"], "format": "json"}
).json()["Block"]["FIPS"],
axis=1,
)
)
lat | lon | block | |
---|---|---|---|
0 | 40.7607 | -73.9804 | 360610131001003 |
1 | 40.7683 | -73.9886 | 360610139003000 |
2 | 40.7616 | -73.9726 | 360610112021004 |