我有一个data frame
in pyspark
。该数据框有一些带有特殊字符的列。
cols = df.schema.names
cols
['abc test', 'test*abc', 'eng)test', 'abc_&test']
reps = ((' ', '_&'), ('(', '*_'), (')', '_*'), ('{', '#_'), ('}', '_#'), (';', '_##'), ('.', '_$'), (',', '_$$'), ('=', '_**'))
def col_rename(x):
new_cols = reduce(lambda a, kv: a.replace(*kv), reps, x)
for i in cols:
df = df.withColumnRenamed(i, col_rename(cols, i))
return df
现在我想看看替换列名称中的特殊字符后是否存在重复的列。
正如我们所看到的,new_cols 中有重复的列abc_&test
我想额外退回_
underscore
当这个情况发生时。
我的 new_cols 应该如下所示
['abc__&test', 'test*_abc', 'eng_*test', 'abc_&test']
我怎样才能实现我想要的?