我有一个数据框,如下所示。
+------+----+----+
| col1 |col2|col3|
+------+----+----+
|abc | c |h |
|abc | c |h |
|abc | c |h |
+------+----+----+
对于col2我有一个值c,如上图所示。
现在所有的c值都应该用cat和h代替,col3的值应该用hat替换。
我可以通过以下声明轻松实现这一目标
dataframe.withColumn("col2", when(col("col2").equalTo("c"), "cat").otherwise(col("col2") )
但我也想拥有原始值。比如说我的最终数据框应该如下所示
+------+----+----+-----+----+
| col1 |col2|col3| col4|col5|
+------+----+----+-----+----+
|abc | c |cat | h|hat |
|abc | c |cat | h|hat |
|abc | c |cat | h|hat |
+------+----+----+----+-----+
我怎样才能做到这一点? 任何帮助.... :)
答案 0 :(得分:1)
您只需要将新列名称设为
c1 <- c("a", "b", "c")
c2 <- c(1, 2, 3)
test <- cbind(c1, c2)
test1 <- DT::datatable(test)
test2 <- DT::datatable(test, options = list(order = list(1, 'desc')))
dataframe.withColumn("col4",
when(col("col2").equalTo("c"), "cat").otherwise(col("col2")
)
.withColumn("col5",
when(col("col3").equalTo("c"), "cat").otherwise(col("col3")
)
使用您提供的名称创建新的withColumn
。如果名称已存在,则只需替换旧列。
输出:
column
如果您确实要保留上一列,则需要创建临时列并交换列名。
希望这有帮助!
答案 1 :(得分:0)
如果我没有弄错,你需要在let url = 'https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=' +
this.location.latitude +
',' +
this.location.longitude +
'&radius='+this.radius +
'&type=park&key=' +
this.placeApiKey;
this.places = this.httpClient.get(url);
this.places
.pipe(
pluck('results', 'geometry')
)
.subscribe(data => {
console.log(data);
});
声明中指定另一个列名:
withColumn
这样就可以保留旧列,并创建一个新列