Spark:添加两列并用从其他列计算的数据填充它们

Posted

技术标签:

【中文标题】Spark:添加两列并用从其他列计算的数据填充它们【英文标题】:Spark: add two columns and fill them with data computed from other columns 【发布时间】:2016-12-04 19:21:50 【问题描述】:

使用 pyspark 2.0.1

我有这个数据框

+-----------+----------+
| Longitude | Latitude |
+-----------+----------+
|  1        |  3       |
|  2        |  1       |
|  2        |  3       |
+-----------+----------+

我想有效地添加两个名为 City, Province 的列,对于每一行,使用列的值(经度和纬度)作为我已经编写的返回城市和省的 python 函数的输入。 所以输出应该是这样的

    +-----------+----------+--------+--------
    | Longitude | Latitude | City  | Province
    +-----------+----------+--------+--------
    |  1        |  3       | London| London
    |  2        |  1       | Paris | Paris
    |  2        |  3       | Dubai | Dubai
    +-----------+----------+--------+--------

【问题讨论】:

【参考方案1】:
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType

def city(lat, long): your code
def province(lat, long): your code

cityUdf = udf(city, StringType())
provinceUdf = udf(province, StringType())

df2 = df.withColumn("city", cityUdf(df["Latitude"], df["Longitude"]))
df3 = df2.withColumn("province", provinceUdf(df2["Latitude"], df2["Longitude"]))

【讨论】:

以上是关于Spark:添加两列并用从其他列计算的数据填充它们的主要内容,如果未能解决你的问题,请参考以下文章

计算两列之间的不同集,同时使用 agg 函数 Pyspark Spark Session

从具有字典列的csv构造pandas数据框

点击按钮后在两个文本区域中添加新行并用文本填充它们

无法将两列添加到用户表单中的列表框

pandas使用shift偏移dataframe中时间列计算相邻两列的时间差如果shift参数为-1则指定列向上移动1个位置,使用前向填充进行缺失值填充

pandas基于shift偏移dataframe中时间列计算相邻两列的时间差如果shift参数为1则指定列向下移动1个位置,使用后向填充进行缺失值填充