You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas提取API查询中每个IP对应的坐标信息?

用Pandas提取嵌套JSON中的IP坐标信息

假设你已经把API返回的JSON数据转换成了Pandas DataFrame,每条记录包含嵌套的location字段(其中coordinates子字段存储经纬度数组),这里提供两种高效的Pandas实现方案,替代原生Python循环:

方法1:使用apply快速提取

这种方式代码简洁,适合快速实现:

import pandas as pd

# 模拟API返回的JSON转成的DataFrame
df = pd.DataFrame([
    {"ip": "192.168.1.1", "location": {"coordinates": [116.3972, 39.9075], "city": "Beijing"}},
    {"ip": "10.0.0.1", "location": {"coordinates": [121.4737, 31.2304], "city": "Shanghai"}}
])

# 提取经度(coordinates第一个元素)和纬度(第二个元素)
df['longitude'] = df['location'].apply(lambda x: x['coordinates'][0])
df['latitude'] = df['location'].apply(lambda x: x['coordinates'][1])

# 查看结果
print(df[['ip', 'longitude', 'latitude']])

方法2:使用json_normalize高效解析嵌套结构

如果数据量较大(比如你提到的50条及以上),json_normalize是更优的选择,它是Pandas专门为嵌套JSON设计的矢量化解析工具,性能远高于循环和apply:

场景A:直接从原始JSON数据生成结构化DF

如果还没把JSON转成普通DataFrame,可以直接用json_normalize一步到位:

from pandas import json_normalize

# 原始API返回的JSON数据
ip_json_data = [
    {"ip": "192.168.1.1", "location": {"coordinates": [116.3972, 39.9075], "city": "Beijing"}},
    {"ip": "10.0.0.1", "location": {"coordinates": [121.4737, 31.2304], "city": "Shanghai"}}
]

# 解析嵌套字段,自动展开location下的所有子字段
normalized_df = json_normalize(ip_json_data)

# 重命名坐标列,让字段更直观
normalized_df = normalized_df.rename(columns={
    'location.coordinates.0': 'longitude',
    'location.coordinates.1': 'latitude'
})

# 保留需要的列
final_df = normalized_df[['ip', 'longitude', 'latitude', 'location.city']]

场景B:基于已有的DataFrame解析嵌套字段

如果已经有了包含location列的DataFrame,可以单独对location字段做归一化:

from pandas import json_normalize

# 假设df是已有的包含location字段的DataFrame
location_details = json_normalize(df['location'])

# 将解析后的坐标列和原DF合并
df = pd.concat([df, location_details], axis=1)

# 将coordinates数组拆分为单独的经度、纬度列
df[['longitude', 'latitude']] = pd.DataFrame(df['coordinates'].tolist(), index=df.index)

# 清理不需要的冗余列(可选)
df = df.drop(['location', 'coordinates'], axis=1)

两种方法都能实现需求,其中json_normalize在处理大量数据时的性能优势更明显,推荐优先使用。

内容的提问来源于stack exchange,提问作者bbartling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:54:30