我有一个Pyspark数据帧(原始数据帧)具有以下数据(所有列都有字符串数据类型)。在我的用例中,我不确定此输入数据框中的所有列是什么。用户只需将数据框的名称传递给我,并要求我修剪此数据框的所有列。典型数据框中的数据如下所示:
id Value Value1
1 "Text " "Avb"
2 1504 " Test"
3 1 2
无论如何,我可以做到这一点,而不依赖于此数据框中的所有列,并获取此数据框中修剪的所有列。修剪数据帧后的数据应如下所示。
id Value Value1
1 "Text" "Avb"
2 1504 "Test"
3 1 2
有人可以帮我吗?如何使用Pyspark数据框实现它?任何帮助将不胜感激。
输入:
df.show()
+---+-----+------+
| id|Value|Value1|
+---+-----+------+
| 1|Text | Avb|
| 2| 1504| Test|
| 3| 1| 2|
+---+-----+------+
码:
import pyspark.sql.functions as func
for col in df.columns:
df = df.withColumn(col, func.ltrim(func.rtrim(df[col])))
输出:
df.show()
+---+-----+------+
| id|Value|Value1|
+---+-----+------+
| 1| Text| Avb|
| 2| 1504| Test|
| 3| 1| 2|
+---+-----+------+
您可以在DataFrame API中使用dtypes函数来获取列名称列表及其数据类型,然后对于所有字符串列使用“trim”函数来修剪值。
问候,
Neeraj
在@ osbon123的答案中使用trim()函数。
from pyspark.sql.functions import trim
for c_name in df.columns:
df = df.withColumn(c_name, trim(col(c_name)))