- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要向具有 bool 值的数据帧添加一个新列,评估数据帧内的一列。例如,我有一个数据框
+----+----+----+----+----+-----------+----------------+
|colA|colB|colC|colD|colE|colPRODRTCE| colCOND|
+----+----+----+----+----+-----------+----------------+
| 1| 1| 1| 1| 3| 39|colA=1 && colB>0|
| 1| 1| 1| 1| 3| 45| colD=1|
| 1| 1| 1| 1| 3| 447|colA>8 && colC=1|
+----+----+----+----+----+-----------+----------------+
val df = List(
(1,1,1,1,3),
(2,2,3,4,4)
).toDF("colA", "colB", "colC", "colD", "colE")
val myExpression = "colA<colC"
import org.apache.spark.sql.functions.expr
df.withColumn("colRESULT",expr(myExpression)).show()
+----+----+----+----+----+---------+
|colA|colB|colC|colD|colE|colRESULT|
+----+----+----+----+----+---------+
| 1| 1| 1| 1| 3| false|
| 2| 2| 3| 4| 4| true|
+----+----+----+----+----+---------+
最佳答案
如果&&改为AND,可以试试
package spark
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
import org.apache.spark.storage.StorageLevel.MEMORY_AND_DISK
object DataFrameLogicWithColumn extends App{
val spark = SparkSession.builder()
.master("local")
.appName("DataFrame-example")
.getOrCreate()
import spark.implicits._
val sourceDF = Seq((1,1,1,1,3,39,"colA=1 AND colB>0"),
(1,1,1,1,3,45,"colD=1"),
(1,1,1,1,3,447,"colA>8 AND colC=1")
).toDF("colA", "colB", "colC", "colD", "colE", "colPRODRTCE", "colCOND").persist(MEMORY_AND_DISK)
val exprs = sourceDF.select('colCOND).distinct().as[String].collect()
val d1 = exprs.map(i => {
val df = sourceDF.filter('colCOND.equalTo(i))
df.withColumn("colRESULT", expr(i))
})
val resultDF = d1.reduce(_ union _)
resultDF.show(false)
// +----+----+----+----+----+-----------+-----------------+---------+
// |colA|colB|colC|colD|colE|colPRODRTCE|colCOND |colRESULT|
// +----+----+----+----+----+-----------+-----------------+---------+
// |1 |1 |1 |1 |3 |39 |colA=1 AND colB>0|true |
// |1 |1 |1 |1 |3 |447 |colA>8 AND colC=1|false |
// |1 |1 |1 |1 |3 |45 |colD=1 |true |
// +----+----+----+----+----+-----------+-----------------+---------+
sourceDF.unpersist()
}
可以试试数据集
case class c1 (colA: Int, colB: Int, colC: Int, colD: Int, colE: Int, colPRODRTCE: Int, colCOND: String)
case class cRes (colA: Int, colB: Int, colC: Int, colD: Int, colE: Int, colPRODRTCE: Int, colCOND: String, colResult: Boolean)
val sourceData = Seq(c1(1,1,1,1,3,39,"colA=1 AND colB>0"),
c1(1,1,1,1,3,45,"colD=1"),
c1(1,1,1,1,3,447,"colA>8 AND colC=1")
).toDS()
def f2(a: c1): Boolean={
// we need parse value with colCOUND
a.colCOND match {
case "colA=1 AND colB>0" => (a.colA == 1 && a.colB > 0) == true
case _ => false
}
}
val res2 = sourceData
.map(i => cRes(i.colA, i.colB, i.colC, i.colD, i.colE, i.colPRODRTCE, i.colCOND,
f2(i)))
关于scala spark 使用 expr 在列内取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54647979/
这个问题在这里已经有了答案: Difference between JSP EL, JSF EL and Unified EL [closed] (2 个回答) 5年前关闭。 前段时间我读过关于“Co
在阅读德州仪器为其 SensorTag 提供的示例代码时我发现了以下代码段。 void SensorTagIO_processCharChangeEvt(uint8_t paramID) {
我正在尝试编写支持简单语法的宏,例如: boo: 3 and foo: go or bar: 4+2 这是我试过的: macro_rules! solr { ($TOPIC:ident : $
有人知道 C 中 if(Expr,Expr) 结构的逻辑含义是什么吗?喜欢: if(lcn = (ULONG)GetLCN(index),lcn) 最佳答案 当您有“,”时,表达式的计算结果为列表中的
我花了几个小时试图让下面的代码工作 PATH="C:\Ben\MyPictures" echo $PATH MY=`expr 2 + 2` 但这不会起作用,因为“expr: c
我尝试将两个数字(实际上这些是某些远程执行命令的输出)分配给 2 个不同的变量,比如说 A 和 B。 当我回显 A 和 B 时,它们显示值: echo $A 809189640755 echo $B
我该怎么做才能使以下工作正常进行? 我需要创建一个接受 Expr 列表并返回 Expr 的函数(Expr 列表 -> Epxr)。 type DataObject() = let data =
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: bash: $[] vs. $(()) $(( expr )) 构造可用于整数 math在 bash 中,例
我很难理解这里的声明: for( int i=0; i< out_length; i++){ int num=i < length_a ? array_a[i] : 0; ... ... 我
我只是好奇。我想知道表达式是否有特定原因 var &= expr 行为方式与不同 var = var && expr. 看起来第一个表达式中的表达式正在执行,而不管 var 上的 false 值。 我
在 bash 中,我不明白为什么第三个命令不正确: [[ 1 -eq 1 ]] # $? is 0 [[ ! 1 -eq 1 ]] # $? is 1 [[ ! ! 1 -
这个问题在这里已经有了答案: Lifetime of temporaries (2 个答案) 关闭 8 年前。 我有一个统计管理器,它通过测量方法执行所需的时间来检查我的应用程序性能。它的用法是这样
我不确定这里是否有人问过这个问题,但我在这里很困惑。我正在读这本很棒的书,名为《Advanced R》,作者为 Hadley Wickham,来自 here . 这里已经描述了一个名为cement的函
我正在通过解析类似 Excel 的公式来生成 sql 请求。 因此,对于给定的公式,我收到以下请求: SELECT IF(COL1='Y', SUM(EXPR),NULL) FROM Table 我没
我看到了一些非常奇怪的东西,我无法解释。我在猜测一些我不熟悉的 C# 边缘情况,或者运行时/发射器中的错误? 我有以下方法: public static bool HistoryMessageExis
我在玩Prefix和 Postfix运算符(分别为 @ 和 //),我遇到了以下问题。 给定以下代码,它们以相同的方式进行评估: Hold[MatrixPlot@Sort@data] // FullF
有没有人在使用 Pandas 时解决了这个 pylint 问题? C:525,59: Comparison to True should be just 'expr' or 'expr is True
我正在尝试制作一个可以按以下方式调用的宏: mactest!(some::Path[1, 2, AnotherName[3, 4]]) 这相当于以下内容: make_result( "some
这两种方法有区别吗? public String toString() { return this.from.toString() + this.to.toString(); } public
我有一个小问题。如果你想测试这里的两个 bash 脚本。这是工作 #!/bin/bash N=40 while [ "$N" -gt 0 ] do echo $N N=`expr $N - 1` do
我是一名优秀的程序员,十分优秀!