划分 pyspark 中的所有列 SQL
dividing all columns in pyspark SQL
我是 Spark 的新手,这可能是一个简单的问题。
我在 pyspark DF1 中有一个 table,其中有一个列名 "A" 和一些其他列。在各种情况下,其他列名可能会发生变化。我想通过将这些 "other" 列的值除以 A 来生成 table DF2。DF2 的列也将是 "other" 列。
例如
DF1 = sql_sc.createDataFrame([(1, 2,3), (2, 4,6), (3, 6,9), (4, 8,12), (5, 10,15)], ["A", "B","C"])
结果将是 table 作为:
DF2 = sql_sc.createDataFrame([(2,3), (2,3), (2,3), (2,3), (2,3)], ["B","C"]
如何在 pyspark 中完成此任务 SQL?
谢谢
您可以使用 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|
+---+---+
我是 Spark 的新手,这可能是一个简单的问题。
我在 pyspark DF1 中有一个 table,其中有一个列名 "A" 和一些其他列。在各种情况下,其他列名可能会发生变化。我想通过将这些 "other" 列的值除以 A 来生成 table DF2。DF2 的列也将是 "other" 列。
例如
DF1 = sql_sc.createDataFrame([(1, 2,3), (2, 4,6), (3, 6,9), (4, 8,12), (5, 10,15)], ["A", "B","C"])
结果将是 table 作为:
DF2 = sql_sc.createDataFrame([(2,3), (2,3), (2,3), (2,3), (2,3)], ["B","C"]
如何在 pyspark 中完成此任务 SQL?
谢谢
您可以使用 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|
+---+---+