pyspark 如何计算每一行的最早时间戳?

b5buobof  于 2022-11-01  发布在  Spark
关注(0)|答案(1)|浏览(122)

| 识别码|A级|B| C类|
| - -|- -|- -|- -|
| 1Fe2| 2022年4月21日|2020年9月12日|2022年3月2日|
| 3GEF| 2021年5月22日|2019年3月4日|2022年4月2日|
我使用的是PySpark。我有一个数据集,我想计算每一行的最早时间戳沿着列名。例如,
1fe 2的结果应为“B”和“2020-9-12”

nlejzf6q

nlejzf6q1#

from pyspark.sql.types import StringType
from pyspark.sql import functions as F
columns = ["ID", "A", "B", "C"]
data = [("1fe2", "2022-4-21", "2020-9-12", "2022-3-2"), ("3gef", "2021-5-22", "2019-3-4", "2022-4-2")]
df = spark.createDataFrame(data, columns)

// first concat the col name to the value

for col_name in (df.schema.fieldNames()):
    if col_name != "ID":
        df = df.withColumn(col_name, F.concat_ws(' ', F.col(col_name), F.lit(col_name)))

// then least() on each row

df.select(df.ID, F.least(df.A, df.B, df.C)).show()

相关问题