我正在尝试从spark数据框中选择特定的列。
特定列的列表为:
required_cols = ['123ABC.PM','456DEF.PM']
Spark_df是给定格式:
'123ABC.PM', '54SWC.PM', '456DEF.PM', '154AS.LB'
23.5 34.5 400.7 100.3
25.4 37.6 401 100
and so on
我已经尝试过:
spark_df_new = spark_df.select(required_cols)
但是我遇到了错误:
"cannot resolve '`123ABC.PM`' given input columns: [123ABC.PM,54SWC.PM, 456DEF.PM,154AS.LB]
``
答案 0 :(得分:0)
使用倒钩`char
required_cols = [`123ABC.PM`,`456DEF.PM`]
答案 1 :(得分:0)
作为解决方法,您可以尝试以下方法。
将带有特殊字符的旧列名替换为新列,然后进行选择。
val columns = df.columns
val regex = """[+._,' ]+"""
val replacingColumns = columns.map(regex.r.replaceAllIn(_, "_"))
val resultDF = replacingColumns.zip(columns).foldLeft(df){(tempdf, name) => tempdf.withColumnRenamed(name._2, name._1)}
resultDF.show(false)
或
df
.columns
.foldLeft(df){(newdf, colname) =>
newdf.withColumnRenamed(colname, colname.replace(" ", "_").replace(".", "_"))
}
来源: SO
答案 2 :(得分:0)
您需要使用*。
*将列表中的元素一一传递给选择项。
spark_df_new = spark_df.select(*required_cols)