作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用一个二进制标志的新列覆盖一个 Spark 列。
我尝试直接覆盖列 id2 但为什么它不像 Pandas 中的就地操作那样工作?
如何在不使用 withcolumn() 创建新列和 drop() 删除旧列的情况下做到这一点?
我知道 spark 数据框是不可变的,这是原因还是有不同的覆盖方式而不使用 withcolumn() 和 drop()?
df2 = spark.createDataFrame(
[(1, 1, float('nan')), (1, 2, float(5)), (1, 3, float('nan')), (1, 4, float('nan')), (1, 5, float(10)), (1, 6, float('nan')), (1, 6, float('nan'))],
('session', "timestamp1", "id2"))
df2.select(df2.id2 > 0).show()
+---------+
|(id2 > 0)|
+---------+
| true|
| true|
| true|
| true|
| true|
| true|
| true|
+---------+
# Attempting to overwriting df2.id2
df2.id2=df2.select(df2.id2 > 0).withColumnRenamed('(id2 > 0)','id2')
df2.show()
#Overwriting unsucessful
+-------+----------+----+
|session|timestamp1| id2|
+-------+----------+----+
| 1| 1| NaN|
| 1| 2| 5.0|
| 1| 3| NaN|
| 1| 4| NaN|
| 1| 5|10.0|
| 1| 6| NaN|
| 1| 6| NaN|
+-------+----------+----+
最佳答案
你可以使用
d1.withColumnRenamed("colName", "newColName")
d1.withColumn("newColName", $"colName")
withColumnRenamed
将现有列重命名为新名称。
withColumn
创建一个具有给定名称的新列。如果已经存在,它会创建一个具有相同名称的新列并删除旧列。
d3 = df2.select((df2.id2 > 0).alias("id2"))
以上应该适用于您的情况。
关于apache-spark - 如何用新列覆盖 Spark 数据框中的整个现有列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44623461/
我是一名优秀的程序员,十分优秀!