删除dataframe列的某些部分

ldxq2e6h  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(562)

我有一个名为df的Dataframe
Dataframe测向

我有下面的代码

def func(row):
    temp=row.asDict()
    temp["concat_val"]="|".join([str(x) for x in row])
    put=Row(**temp)
    return put

DF.show()
row_rdd=DF.rdd.map(func)
concat_df=row_rdd.toDF().show()

我得到了这样的结果

但是,我需要一个输出,它将从concat\val列中删除id和nm列值。这张table应该如下所示

请建议删除id和nm值的方法

cgh8pdjw

cgh8pdjw1#

所以你要在这里集中注意力 txt 以及 uppertx 值应以“|”分隔。你可以试试下面的代码。


# Load required libraries

from pyspark.sql.functions import *

# Create DataFrame

df = spark.createDataFrame([(1,"a","foo","qwe"), (2,"b","bar","poi"), (3,"c","mnc","qwe")], ["id", "nm", "txt", "uppertxt"])

# Concat column txt and uppertxt delimited by "|"

# Approach - 1 : using concat function.

df1 = df.withColumn("concat_val", concat(df["txt"] , lit("|"), df["uppertxt"]))

# Approach - 2 : Using concat_ws function

df1 = df.withColumn("concat_val", concat_ws("|", df["txt"] , df["uppertxt"]))

# Display Output

df1.show()

输出

+---+---+---+--------+----------+
| id| nm|txt|uppertxt|concat_val|
+---+---+---+--------+----------+
|  1|  a|foo|     qwe|   foo|qwe|
|  2|  b|bar|     poi|   bar|poi|
|  3|  c|mnc|     qwe|   mnc|qwe|
+---+---+---+--------+----------+

您可以在spark文档中找到有关concat和concat的更多信息。
我希望这有帮助。

相关问题