标签: pyspark-dataframes

基于列减去2个pyspark数据帧

我有 2 个 pyspark 数据框,

i
+---+-----+
| ID|COL_A|
+---+-----+
|  1|  123|
|  2|  456|
|  3|  111|
|  4|  678|
+---+-----+
j
+----+-----+
|ID_B|COL_B|
+----+-----+
|   2|  456|
|   3|  111|
|   4|  876|
+----+-----+
Run Code Online (Sandbox Code Playgroud)

我正在尝试根据特定列的值进行减去i,j即,存在于COL_Aof 中的值i不应存在​​于COL_Bof 中j。

预期输出应该是,

diff
+---+-----+
| ID|COL_A|
+---+-----+
|  1|  123|
|  4|  678|
+---+-----+
Run Code Online (Sandbox Code Playgroud)

这是我的代码

common = i.join(j.withColumnRenamed('COL_B', 'COL_A'), ['COL_A'], 'leftsemi')
diff = i.subtract(common)
diff.show()
Run Code Online (Sandbox Code Playgroud)

但是输出错误,

diff
+---+-----+
| …
Run Code Online (Sandbox Code Playgroud)

python dataframe pyspark pyspark-dataframes

1
推荐指数
1
解决办法
3306
查看次数

数组元素的总和取决于值条件 pyspark

我有一个 pyspark 数据框:

id   |   column
------------------------------
1    |  [0.2, 2, 3, 4, 3, 0.5]
------------------------------
2    |  [7, 0.3, 0.3, 8, 2,]
------------------------------
Run Code Online (Sandbox Code Playgroud)

我想创建一个 3 列:

  • Column 1: 包含元素之和 < 2
  • Column 2: 包含元素之和 > 2
  • Column 3: 包含元素的总和 = 2(有时我有重复的值,所以我计算它们的总和)如果我没有值,我将其设为 null。

期待结果:

id   |   column               |  column<2 |  column>2   | column=2 
------------------------------|--------------------------------------------  
1    |  [0.2, 2, 3, 4, 3, 0.5]|  [0.7]    |  [12]       |  null
---------------------------------------------------------------------------
2    |  [7, 0.3, 0.3, 8, 2,]  | [0.6] …
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark pyspark-sql pyspark-dataframes

1
推荐指数
1
解决办法
2471
查看次数

使用pyspark从每行的数组中获取不同的计数

我正在使用 pyspark 数据帧从每行的数组中寻找不同的计数:输入:col1 [1,1,1] [3,4,5] [1,2,1,2]

output:
1
3
2  

I used below code but it is giving me the length of an array:
output:
3
3
4

please help me how do i achieve this using python pyspark dataframe.

slen = udf(lambda s: len(s), IntegerType())
count = Df.withColumn("Count", slen(df.col1))
count.show()

Thanks in advanced !
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql pyspark pyspark-dataframes

1
推荐指数
1
解决办法
1134
查看次数

如何将数组拆分为块并找到块的总和并将输出作为数组存储在 pyspark 中

我有一个数据框,如下所示:

+-----+------------------------+
|Index|   finalArray           |
+-----+------------------------+
|1    |[0, 2, 0, 3, 1, 4, 2, 7]|
|2    |[0, 4, 4, 3, 4, 2, 2, 5]|
+-----+------------------------+
Run Code Online (Sandbox Code Playgroud)

我想将数组分成 2 个块,然后找到每个块的总和并将结果数组存储在列 finalArray 中。它将如下所示:

+-----+---------------------+
|Index|    finalArray       |
+-----+---------------------+
|1    |[2, 3, 5, 9]         |
|2    |[4, 7, 6, 7]         |
+-----+---------------------+
Run Code Online (Sandbox Code Playgroud)

我可以通过创建 UDF 但寻找更好和优化的方法来做到这一点。如果我可以使用 withColumn 并传递 flagArray 来处理它,而不必编写 UDF,则最好。

@udf(ArrayType(DoubleType()))
def aggregate(finalArray,chunkSize):
   n = int(chunkSize)
   aggsum = []
   final = [finalArray[i * n:(i + 1) * n] for i in range((len(finalArray) + n …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql pyspark pyspark-dataframes

1
推荐指数
1
解决办法
542
查看次数

用pyspark中对应的数字替换数组中的元素

我有一个如下所示的数据框:

   +----------+--------------------------------+
   | Index    |           flagArray            |
   +----------+--------------------------------+
   |    1     | ['A','S','A','E','Z','S','S']  | 
   +----------+--------------------------------+
   |    2     | ['A','Z','Z','E','Z','S','S']  |
   +--------- +--------------------------------+
Run Code Online (Sandbox Code Playgroud)

我想用其相应的数值来表示数组元素。

     A - 0
     F - 1
     S - 2
     E - 3
     Z - 4
Run Code Online (Sandbox Code Playgroud)

所以我的输出数据帧应该看起来像

   +----------+--------------------------------+--------------------------------+
   | Index    |           flagArray            |           finalArray           |
   +----------+--------------------------------+--------------------------------+
   |    1     | ['A','S','A','E','Z','S','S']  | [0, 2, 0, 3, 4, 2, 2]          | 
   +----------+--------------------------------+--------------------------------+
   |    2     | ['A','Z','Z','E','Z','S','S']  | [0, 4, 4, 3, 4, 2, 2]          |
   +--------- +--------------------------------+--------------------------------+
Run Code Online (Sandbox Code Playgroud)

我在 pyspark 中编写了一个 udf,我通过编写一些 …

python-3.x apache-spark apache-spark-sql pyspark pyspark-dataframes

0
推荐指数
1
解决办法
1435
查看次数