【问题标题】:Duplicate rows in a Pyspark DataframePyspark 数据框中的重复行
【发布时间】:2016-10-20 14:45:44
【问题描述】:

假设我有一个数据框:

df = sqlContext.createDataFrame(
    [(1, 10, 21.0, 0), (3, 14, -23.0, 1)], ("x1", "x2", "x3", "x4"))

df.show()

## +---+---+-----+---+
## | x1| x2|   x3| x4|
## +---+---+-----+---+
## |  1| 10| 23.0|  5|
## |  3| 14|-23.0|  0|
## +---+---+-----+---+

什么是“复制”行并在这些重复项中设置x4=1 并具有以下效果的有效方法:

## +---+---+-----+---+
## | x1| x2|   x3| x4|
## +---+---+-----+---+
## |  1| 10| 23.0|  5|
## |  1| 10| 23.0|  1|
## |  3| 14|-23.0|  0|
## |  3| 14|-23.0|  1|
## +---+---+-----+---+

在 Apache PIG 中,模拟很简单:执行 foreach 并生成:

FLATTEN(TOBAG(1, x4)) AS x4

谢谢大家

【问题讨论】:

    标签: apache-spark dataframe pyspark


    【解决方案1】:

    pyspark.sql.functions导入所需函数:

    from pyspark.sql.functions import array, explode, lit
    

    并替换现有列:

    df.withColumn("x4", explode(array(lit(1), df["x4"])))
    

    【讨论】:

    • +1 ,这会在 df 中添加同一行,但是如果我想插入 n 行,n 可能是 df 中的另一个列值
    猜你喜欢
    • 2019-03-25
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 2021-05-23
    • 2018-10-28
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多