我有 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) 我有一个 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: 包含元素之和 < 2Column 2: 包含元素之和 > 2Column 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) 我正在使用 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) 我有一个数据框,如下所示:
+-----+------------------------+
|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) 我有一个如下所示的数据框:
+----------+--------------------------------+
| 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