Условный оператор на основе столбца даты в pyspark - PullRequest
1 голос
/ 04 октября 2019

Я хочу создать новый столбец на основе некоторого условия в pyspark. Мой фрейм данных -

    id          create_date                txn_date
    1           2019-02-23 23:27:42        2019-08-18 00:00:00
    2           2019-08-24 00:10:18        2019-08-24 00:00:00
    3           2019-09-16 17:47:56        2018-07-23 00:00:00
    4           2019-09-24 01:31:21        2018-05-13 00:00:00
    5           2018-12-26 23:28:09        2019-07-15 00:00:00

Все столбцы в строковом формате. Мое состояние -

txn_date> = create_date. На основании этого условия я создам новый столбец is_mem.

Мой окончательный фрейм данных выглядит так -

    id          create_date                txn_date                    is_mem
    1           2019-02-23 23:27:42        2019-08-18 00:00:00           0
    2           2019-08-24 00:10:18        2019-09-24 00:00:00           1
    3           2019-09-16 17:47:56        2018-07-23 00:00:00           1
    4           2019-09-24 01:31:21        2018-05-13 00:00:00           1
    5           2018-12-26 23:28:09        2019-07-15 00:00:00           0

Как это сделать в pyspark?

1 Ответ

0 голосов
/ 04 октября 2019
from pyspark.sql.types import * 
import pyspark.sql.functions as F

schema1 = StructType([StructField('id', IntegerType(), True),
                     StructField('create_date', StringType(), True),
                     StructField('txn_date', StringType(), True)])

data1  = [
(1,'2019-02-23 23:27:42','2019-08-18 00:00:00' ),
(2,'2019-08-24 00:10:18','2019-08-24 00:00:00' ), 
(3,'2019-09-16 17:47:56','2018-07-23 00:00:00'), 
(4,'2019-09-24 01:31:21','2018-05-13 00:00:00'), 
(5,'2018-12-26 23:28:09','2019-07-15 00:00:00')
]

df=spark.createDataFrame(data1,schema1)

df.withColumn("is_mem",F.when(df['txn_date']>=df['create_date'],'0').otherwise('1')).show()

+---+-------------------+-------------------+----------+
| id|        create_date|           txn_date|    is_mem|
+---+-------------------+-------------------+----------+
|  1|2019-02-23 23:27:42|2019-08-18 00:00:00|         0|
|  2|2019-08-24 00:10:18|2019-08-24 00:00:00|         1|
|  3|2019-09-16 17:47:56|2018-07-23 00:00:00|         1|
|  4|2019-09-24 01:31:21|2018-05-13 00:00:00|         1|
|  5|2018-12-26 23:28:09|2019-07-15 00:00:00|         0|
+---+-------------------+-------------------+----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...