我有一个表有多个负数和正数,我想只删除那些记录从表中有负的数额,并有相同的正值。我不知道该怎么解释这个场景...
我将给予一个简单的例子-
我有一个有10条记录的数组,其中4条记录是负数,6条记录是正数。此外,只删除所有三列匹配的记录,即。(100 15-09-2023 F)至(-100 15-09-2023 F)但不至(-100 15-09-2023 S)
amount_debited |transaction_date |customer_tan
100 | 15-09-2023 | F
-100 | 15-09-2023 | F
-100 | 15-09-2023 | F
100 | 15-09-2023 | S
100 | 15-09-2023 | F
500 | 19-09-2023 | F
-500 | 19-09-2023 | F
500 | 19-09-2023 | F
500 | 19-09-2023 | S
-600 | 19-09-2023 | F
400 | 19-09-2023 | F
-400 | 19-09-2023 | F
所以在这里我想删除相同数量的记录的负金额和正金额,所以我的输出应该是
amount_debited |transaction_date |customer_tan
100 | 15-09-2023 | S
500 | 19-09-2023 | F
500 | 19-09-2023 | S
-600 | 19-09-2023 | F
df = df.withColumn("idx", F.monotonically_increasing_id())
windowSpec = W.orderBy("idx")
df = df.withColumn("idx", F.row_number().over(windowSpec))
df=df.withColumn("amount_debited_dummy",F.expr('abs(amount_debited)'))
df= df.withColumn("positive_key",F.concat_ws("_",'transaction_date','customer_tan','amount_debited_dummy'))
grouped_count = Window().partitionBy('positive_key')
df =df.withColumn("sum_amount",F.sum('amount_debited').over(grouped_count))
卡在这里:当有相同数量的记录与正值和负值,我能够过滤后的记录与sum_amount=0(例如。-400).但当条目是奇数,我不能挑选的id.
1条答案
按热度按时间pinkon5k1#
检查下面的代码