如何在pyspark中重命名数据框的列名?

时间:2018-10-23 05:48:02

标签: python dataframe pyspark

我想重命名数据框列中的一个列名,所以当前列名是rate%year。我想在rateyear中将其重命名为pyspark

可能的是,我们可以在将数据帧注册为表后在数据帧和表级别重命名列,但是在表级别“%”会产生问题,所以我想在数据帧级别itelf重命名。

我尝试了这个-data.selectExpr("rate%year as rateyear")

但收到此错误pyspark.sql.utils.AnalysisException: u"cannot resolve 'rate' given input columns

谢谢。

4 个答案:

答案 0 :(得分:1)

尝试一下:

sqlContext.registerDataFrameAsTable(data, "myTable")
data = sqlContext.sql("SELECT rate%year AS rateyear from myTable")

答案 1 :(得分:0)

在数据框级别重命名的可能方法-

oldColumns=['rate%year']
newColumns = ["rateyear"]
df1 = reduce(lambda df, idx: df.withColumnRenamed(oldColumns[idx], newColumns[idx]), xrange(len(oldColumns)), df)

这在数据帧级别上工作正常。有什么建议在表级别上解决吗?

答案 2 :(得分:0)

我写了一个简单快捷的函数供您从列名中删除%。请享用! :)

def rename_cols(rename_df):
    for column in rename_df.columns:
        new_column = column.replace('%','')
        rename_df = rename_df.withColumnRenamed(column, new_column)
    return rename_df

答案 3 :(得分:0)

更改数据框列名称的简便方法。

def format_col(df):    
    cols = [col.replace("%", "") for col in df.columns]
    res_df = df.toDF(*cols)
    return res_df