我想重命名数据框列中的一个列名,所以当前列名是rate%year
。我想在rateyear
中将其重命名为pyspark
。
可能的是,我们可以在将数据帧注册为表后在数据帧和表级别重命名列,但是在表级别“%”会产生问题,所以我想在数据帧级别itelf重命名。
我尝试了这个-data.selectExpr("rate%year as rateyear")
但收到此错误pyspark.sql.utils.AnalysisException: u"cannot resolve 'rate' given input columns
谢谢。
答案 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