我想用PySpark数据框中的None替换列表中的某些字符串值(nan_字符串)。dataframe包含类型为double、date和string的列。如何仅将UDF应用于字符串值,而不必编写额外的for循环
这是我目前的代码:
#convert the following values to None
nan_strings = ["nicht geschlüsselt", "NULL-Default", "0000000000", 'nicht gefüllt', '99991231', '?',
'unbekannt']
#get column names
column_names = df_fraud.schema.names
print(column_names)
#create function to replace values with None
def replace(column, value):
#if column is not the value and not of type string then return values, otherwise return None
return when(column != value & ~ column.dtypes.startswith('string'), column).otherwise(lit(None))
#turn into literal
nan_strings_literal = array(*[array(*[lit(nan_string)]) for nan_stringin nan_strings])
#apply udf column by column
for column in column_names:
df_fraud = df_fraud.withColumn(str(column), replace(col(str(column)), nan_strings_literal))
但是,我确实收到了异常AnalysisException:“无法从列中提取值:需要结构类型,但得到了双精度
目前没有回答
相关问题 更多 >
编程相关推荐