在所有列聚合后重命名所有列[duplicate]

问题描述 投票:2回答:1

这个问题在这里已有答案:

我在数据框中的所有列上进行汇总和,代码类似于:

   df_aggregated = df.groupBy('key').sum()

结果列已更改其名称,如下所示:

   sum(colum1), sum(colum2)

我需要将所有新列的名称更改为以前的名称

我尝试使用'别名',但我有太多列,我想要更自动的东西

python apache-spark dataframe pyspark aggregate
1个回答
3
投票

您可以使用此功能。任何聚合都具有相同的模式:xxx(column_name)如果您有模式,请使用正则表达式来匹配它。

import re

def rename_columns_after_any_aggregation(df):
    for name in df.schema.names:
        clear_name = ''
        m = re.search('\((.*?)\)', name)
        if m:
            clear_name = m.group(1)
            df = df.withColumnRenamed(name, clear_name)

    return df
© www.soinside.com 2019 - 2024. All rights reserved.