【发布时间】:2019-02-27 21:19:26
【问题描述】:
在 PySpark 中,我正在尝试清理数据集。某些列的值中有不需要的字符 (=" ")。我将数据集作为 DataFrame 读取,并且我已经创建了一个可以成功删除字符的用户定义函数,但现在我正在努力编写一个脚本,该脚本可以识别我需要在哪些列上执行 UserDefinedFunction。我只使用数据集的最后一行,假设列总是包含相似的条目。
数据帧(df):
id value1 value2 value3
="100010" 10 20 ="30"
在 Python 中,以下工作:
columns_to_fix = []
for col in df:
value = df[col][0]
if type(value) == str and value.startswith('='):
columns_to_fix.append(col)
我在 PySpark 中尝试了以下操作,但这会返回所有列名:
columns_to_fix = []
for x in df.columns:
if df[x].like('%="'):
columns_to_fix.append(x)
期望的输出:
columns_to_fix: ['id', 'value3']
在列表中有列名后,我可以使用 for 循环来修复列中的条目。我对 PySpark 很陌生,所以如果这是一个太基本的问题,我深表歉意。非常感谢您的建议!
【问题讨论】:
-
df[x].like('%="')返回一个不是None的对象,因此测试总是True。您需要collect()查看内容。