我使用类似这样的代码对数据帧中的所有列进行汇总求和:
df_aggregated = df.groupBy('key').sum()
结果列已将其名称更改为如下模式:
sum(colum1), sum(colum2)
我需要将所有新列的名称更改为以前的名称
我尝试使用'alias',但是列太多了,我想要更自动的东西
答案 0 :(得分: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