我正尝试在PySpark中批量重命名我的列,从:
'collect_list(Target_Met_1)[1]' --> 'AB11'
'collect_list(Target_Met_1)[2]' --> 'AB12'
'collect_list(Target_Met_2)[1]' --> 'AB21'
'collect_list(Target_Met_1)[150]' --> 'AB150'我如何以编程方式在中处理它?现在,我可以使用以下命令手动更改名称:
df.withColumnRenamed('collect_list(Target_Met_1)[1]', 'AB11')但是如果我有500列,效率就不高。我知道重命名它的另一种方法是使用像udf这样的东西,但我想不出最好的方法。
我拆分了列,这不是问题所在。问题在于重命名该列。
发布于 2019-06-22 02:50:30
不要紧。弄清楚了。本质上,我必须使用列表理解来重命名列。我正在拆分上面链接中提到的列。这就是它起到的作用:
df = df.select('1', '2', '3', *[df[col][i].alias("AB" + str(i + 1) + col) for col in columns for i in range(max_dict[col])])发布于 2020-12-27 02:32:34
要重命名所有列,可以使用toDf方法
import re
df.toDF(*['AB' + ''.join(re.findall('\d+', i)) for i in df.columns])发布于 2021-04-23 08:13:44
像这样的东西也会有帮助。它是一个重命名功能,类似于Pandas的重命名功能。
def rename_cols(map_dict):
"""
Rename a bunch of columns in a data frame
:param map_dict: Dictionary of old column names to new column names
:return: Function for use in transform
"""
def _rename_cols(df):
for old, new in map_dict.items():
df = df.withColumnRenamed(old, new)
return df
return _rename_cols你可以像这样使用它
spark_df.transform(rename_cols(dict(old1='new1', old2='new2', old3='new3')))https://stackoverflow.com/questions/56707359
复制相似问题