【发布时间】:2020-10-20 07:48:21
【问题描述】:
我是 Spark 的新手,在应用基于条件的 groupby 函数时需要一些帮助。以下是我当前的输出
+----------+------------------+-----------------+----------+---------+------------+------+----------+--------+----------------+
|account_id|credit_card_Number|credit_card_limit|first_name|last_name|phone_number|amount| date| shop|transaction_code|
+----------+------------------+-----------------+----------+---------+------------+------+----------+--------+----------------+
| 12345| 123456789123| 100000| abc| xyz| 1234567890| 1000|01/06/2020| amazon| buy|
| 12345| 123456789123| 100000| abc| xyz| 1234567890| 1100|02/06/2020| ebay| buy|
| 12345| 123456789123| 100000| abc| xyz| 1234567890| 500|02/06/2020| amazon| sell|
| 12345| 123456789123| 100000| abc| xyz| 1234567890| 200|03/06/2020|flipkart| buy|
| 12345| 123456789123| 100000| abc| xyz| 1234567890| 4000|04/06/2020| ebay| buy|
| 12345| 123456789123| 100000| abc| xyz| 1234567890| 900|05/06/2020| amazon| buy|
+----------+------------------+-----------------+----------+---------+------------+------+----------+--------+----------------+
我需要使用日期进行分组,除此之外,我还需要根据交易代码中的“买入”或“卖出”创建一个额外的余额列。
例如,对于第一行,金额为 1000,交易代码为“购买”,因此我从信用额度 (100000) 中减去 1000,并在新列中创建新值 90000。
对于第二行,我们有两个值,一个是买入(1100),另一个是卖出(500),这里我应该从前一行输出中减去 1100(即 90000)加上 500。所以 02/06/2020 的输出是 98400
预期输出 附有上述数据框的附加列
Credit_left
99000
98400
98200
94200
93300
下面是这个表的架构
root
|-- account_id: long (nullable = true)
|-- credit_card_Number: long (nullable = true)
|-- credit_card_limit: long (nullable = true)
|-- first_name: string (nullable = true)
|-- last_name: string (nullable = true)
|-- phone_number: long (nullable = true)
|-- amount: long (nullable = true)
|-- date: string (nullable = true)
|-- shop: string (nullable = true)
|-- transaction_code: string (nullable = true)
这是一项如此复杂的任务,所以我找不到所需的答案。请帮助我解决这个问题。非常感谢!
【问题讨论】:
-
您的输出与原始数据框的行数不同,不能作为新列追加
-
我需要使用 date 应用 groupby 并且在应用 groupby 函数时我需要执行这个条件。因为我有两个相似的日期,我将对它们进行分组,因此最终输出将是 5 行
-
@keerthi007 你能给出一个可重现的数据样本吗?
-
你能解释一下reproducibe data sample是什么意思吗?对不起,我是 Spark 的新手。非常感谢!
标签: apache-spark hadoop pyspark apache-spark-sql