我在pyspark中有一个有15列的数据框.
列名是id
,name
,emp.dno
,emp.sal
,state
,emp.city
,zip
.....
现在我想,以取代有列名'.'
在他们'_'
像'emp.dno'
到'emp_dno'
我想动态地做
我如何在pyspark实现这一目标?
您可以使用与@ zero323这个伟大解决方案类似的东西:
df.toDF(*(c.replace('.', '_') for c in df.columns))
或者:
from pyspark.sql.functions import col replacements = {c:c.replace('.','_') for c in df.columns if '.' in c} df.select([col(c).alias(replacements.get(c, c)) for c in df.columns])
然后replacement
字典看起来像:
{'emp.city': 'emp_city', 'emp.dno': 'emp_dno', 'emp.sal': 'emp_sal'}
更新:
如果我在列名中有空格的数据框,那么如何用空格替换
'.'
空格和空格'_'
import re df.toDF(*(re.sub(r'[\.\s]+', '_', c) for c in df.columns))