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

基于PySpark Pandas API提取DataFrame每行数组元素生成经纬度列

从PySpark Pandas DataFrame的Point类型列提取经纬度坐标

场景说明

数据集的location列是Point类型,非空值为包含coordinates数组(格式为[经度, 纬度])和type字段的字典,部分行值为None,需要批量生成longitude(经度)和latitude(纬度)新列。

解决方案

使用PySpark Pandas的assign()结合lambda函数,处理空值的同时批量提取坐标:

import pyspark.pandas as ps

# 批量添加经纬度列
results_df = results_df.assign(
    longitude=lambda df: df['location'].apply(lambda x: x['coordinates'][0] if x is not None else None),
    latitude=lambda df: df['location'].apply(lambda x: x['coordinates'][1] if x is not None else None)
)

代码说明

  • assign()方法一次性添加两列,保持代码简洁且避免多次修改原DataFrame
  • 内层lambda先判断location是否为None,防止访问空值的属性引发错误
  • 对有效Point数据,分别提取coordinates数组的第0位(经度)和第1位(纬度)

验证结果

执行以下代码查看生成的列:

print(results_df[['latitude', 'longitude']].head())

输出示例:

latitude(纬度)longitude(经度)
30.385328900508-97.707172829666
39.395338984595-74.587966507573
NoneNone
42.396358150943-104.664962196304
NoneNone

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:48:26