Apache spark pyspark在pyspark数据帧上复制一列
在Scala中,我可以简单地在DF中复制一列,如下所示:Apache spark pyspark在pyspark数据帧上复制一列,apache-spark,pyspark,Apache Spark,Pyspark,在Scala中,我可以简单地在DF中复制一列,如下所示: val df = spark.read.format("csv") .option("sep", ",") .option("inferSchema", "true") .option("header", "true") .option("samplingRatio&
val df =
spark.read.format("csv")
.option("sep", ",")
.option("inferSchema", "true")
.option("header", "true")
.option("samplingRatio", "1.0")
.load("/FileStore/tables/diabetesPIMA.dat")
df.show(false)
val df2 = df.withColumn("age2", $"age")
df2.show()
如何使用withColumn在pyspark中进行此简单复制
似乎什么都不起作用,所有的职位也不起作用。奇怪的是,一定是遗漏了什么,但正如前面所说的,所有的帖子都不能在数据库上工作
错误消息:
org.apache.spark.sql.AnalysisException: cannot resolve '`age`' given input columns: [ glucose, pregnancies, insulin, outcome, BMI, age, diabetesPF, skinThickness, bloodPressure];;
对于pyspark(根据我已经尝试过的答案):
看起来很像:
df = df.withColumn('col3', F.col('col2'))
看起来您可能在列名中有一个额外的空格,而不是
age
您有age
请检查架构并按如下方式使用它
df = df.withColumn('age2', F.col(' age'))
df.show()
相反,请检查
ignoreLeadingWhiteSpace
和ignoreTrailingWhiteSpace
也跳过前导和尾随空格。为了省去一些麻烦,您可以在读取csv文件时指定ignoreLeadingWhiteSpace
和ignoreTrailingWhiteSpace
,这将从标题和内容中删除所有前导/尾随空格
e、 g
df = df.withColumn('age2', F.col(' age'))
df.show()
df = spark.read.csv(
'file.csv',
header=True,
inferSchema=True,
ignoreLeadingWhiteSpace=True,
ignoreTrailingWhiteSpace=True
)