Динамически переименовывать несколько столбцов в PySpark DataFrame
у меня есть фрейм данных в pyspark, который имеет 15 столбцов.
имя столбца id, name, emp.dno, emp.sal, state, emp.city, zip .....
теперь я хочу заменить имена столбцов, которые '.' в них '_'
как 'emp.dno' to 'emp_dno'
Я хотел бы сделать это динамически
как я могу достичь этого в pyspark?
1 ответов
вы можете использовать что-то подобное это отличное решение от @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'}
обновление:
если у меня есть dataframe с пробелом в именах столбцов, также как заменить оба!--5--> и пространство с
'_'
import re
df.toDF(*(re.sub(r'[\.\s]+', '_', c) for c in df.columns))