【问题标题】:dividing all columns in pyspark SQL划分pyspark SQL中的所有列
【发布时间】:2018-04-26 15:15:59
【问题描述】:

我是 Spark 的新手,这可能是一个简单的问题。

我在 pyspark DF1 中有一个表,列名“A”和其他一些列。其他列名称可能会在各种情况下发生变化。我想通过将这些“其他”列的值除以 A 来生成表 DF2。DF2 的列也将是“其他”列。

例如对于

DF1 = sql_sc.createDataFrame([(1, 2,3), (2, 4,6), (3, 6,9), (4, 8,12), (5, 10,15)], ["A", "B","C"])    

结果将是一个表格:

 DF2 = sql_sc.createDataFrame([(2,3), (2,3), (2,3), (2,3), (2,3)], ["B","C"]

如何在 pyspark SQL 中完成这项任务?

谢谢

【问题讨论】:

    标签: sql pyspark divide


    【解决方案1】:

    您可以使用 DataFrame.columns 对列进行迭代,然后只需使用除法运算符来执行逐行数学运算。像这样:

    from pyspark.sql.functions import col
    
    DF1 = spark.createDataFrame([(1, 2,3), (2, 4,6), (3, 6,9), (4, 8,12), (5, 10,15)], ["A", "B","C"])  
    DF1.show()
    
    df = DF1
    for field in DF1.columns:
        if field != 'A':
            df = df.withColumn(field, col(field) / col("A"))
    
    DF2 = df.drop('A')
    DF2.show()
    

    哪个输出这个:

    +---+---+---+
    |  A|  B|  C|
    +---+---+---+
    |  1|  2|  3|
    |  2|  4|  6|
    |  3|  6|  9|
    |  4|  8| 12|
    |  5| 10| 15|
    +---+---+---+
    
    +---+---+
    |  B|  C|
    +---+---+
    |2.0|3.0|
    |2.0|3.0|
    |2.0|3.0|
    |2.0|3.0|
    |2.0|3.0|
    +---+---+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 2010-09-11
      • 2010-10-22
      • 2021-05-05
      • 1970-01-01
      相关资源
      最近更新 更多