当前位置:  开发笔记 > 数据库 > 正文

在PySpark DataFrame中动态重命名多个列

如何解决《在PySparkDataFrame中动态重命名多个列》经验,为你挑选了1个好方法。

我在pyspark中有一个有15列的数据框.

列名是id,name,emp.dno,emp.sal,state,emp.city,zip.....

现在我想,以取代有列名'.'在他们'_'

'emp.dno''emp_dno'

我想动态地做

我如何在pyspark实现这一目标?



1> MaxU..:

您可以使用与@ 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))

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有