这个问题在这里已有答案:
我在数据框中的所有列上进行汇总和,代码类似于:
df_aggregated = df.groupBy('key').sum()
结果列已更改其名称,如下所示:
sum(colum1), sum(colum2)
我需要将所有新列的名称更改为以前的名称
我尝试使用'别名',但我有太多列,我想要更自动的东西
您可以使用此功能。任何聚合都具有相同的模式: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