删除 Spark 数据框中的空格时出错 - PySpark
Posted
技术标签:
【中文标题】删除 Spark 数据框中的空格时出错 - PySpark【英文标题】:Error while removing empty spaces in Spark dataframe - PySpark 【发布时间】:2020-05-12 15:34:37 【问题描述】:我正在将 csv 文件读入 spark 数据框。 csv 在许多列中有空格“”,我想删除这些空格。 csv 中有 500 列,所以我不能在我的代码中手动指定列
样本数据:
ADVANCE_TYPE CHNG_DT BU_IN
A 20190718 1
20190728 2
20190714
B 20190705
20190724 4
代码:
from pyspark.sql.functions import col,when,regexp_replace,trim
df_csv = spark.read.options(header='true').options(delimiter=',').options(inferSchema='true').options(nullValue="None").csv("test41.csv")
for col_name in df_csv.columns:
df_csv = df_csv.select(trim(col(col_name)))
但这些代码并没有删除空格。请帮忙!
【问题讨论】:
【参考方案1】:您可以使用 list comprehension 对所有必需的列应用 trim。
Example:
df=spark.createDataFrame([(" ","12343"," ","9 "," 0")])
#finding length of each column
expr=[length(col(col_name)).name('length'+ col_name) for col_name in df.columns]
df.select(expr).show()
#+--------+--------+--------+--------+--------+
#|length_1|length_2|length_3|length_4|length_5|
#+--------+--------+--------+--------+--------+
#| 3| 5| 3| 3| 4|
#+--------+--------+--------+--------+--------+
#trim on all the df columns
expr=[trim(col(col_name)).name(col_name) for col_name in df.columns]
df1=df.select(expr)
df1.show()
#+---+-----+---+---+---+
#| _1| _2| _3| _4| _5|
#+---+-----+---+---+---+
#| |12343| | 9| 0|
#+---+-----+---+---+---+
#length on df1 columns
expr=[length(col(col_name)).name('length'+ col_name) for col_name in df.columns]
df1.select(expr).show()
#+--------+--------+--------+--------+--------+
#|length_1|length_2|length_3|length_4|length_5|
#+--------+--------+--------+--------+--------+
#| 0| 5| 0| 1| 1|
#+--------+--------+--------+--------+--------+
【讨论】:
以上是关于删除 Spark 数据框中的空格时出错 - PySpark的主要内容,如果未能解决你的问题,请参考以下文章