当前位置: 首页 > 知识库问答 >
问题:

使用其他列添加函数的新列

鲜于阳成
2023-03-14

在我的scala程序中,我有一个dataframedf,其中有两列aB(类型都为int)。除此之外,我有一个先前定义的对象obj和一些方法和属性。在这里,我想要使用dataframe的当前值和obj中的属性向dataframedf添加一个新列。

例如,如果我有下面的dataframe:

+---+---+
| a | b |
+---+---+
| 1 | 0 |
| 4 | 8 |
| 2 | 5 |
+---+---+
+---+---+-----+
| a | b |  c  |
+---+---+-----+
| 1 | 0 | -9  |
| 4 | 8 |  2  |
| 2 | 5 | -3  |
+---+---+-----+
df = df.withColumn("c", obj.f(col("a"), col("b")))

谢谢你。

共有1个答案

李华茂
2023-03-14

没有功能也能达到同样的效果,性能会更好:

val num = 10
df.withColumn("c", col("a") + col("b") - lit(num))
 类似资料:
  • 我使用文件路径解析 Spark 数据帧,但现在我想将路径与时间一起作为单独的列添加到生成的数据帧中。下面是一个当前的解决方案(pathToDF 是一个帮助器方法): 我正在尝试做这样的事情,但我不确定如何使用Column添加时间列: 实现它的更好方法是什么? 输入自由度: 当前结果: 预期结果:

  • 问题内容: 在中创建 其他列中 最快的列的最快(最有效)方法 是 什么? 考虑以下示例: 产生: 假设我想创建一个新列,该列包含一个值,该值基于使用函数将当前行中的单词与中的其他行进行比较的输出而得出。 这的确产生了正确的输出,但是它使用了and ,这对于large而言并不是很有效。 有没有一种方法可以 矢量化 (正确的术语?)这种方法?还是有另一种更好(更快)的方法来做到这一点? 在原始帖子中,

  • 试图在熊猫中复制一个简单的Excel函数,但没有成功。还没有尝试np.where(),因为我想学习lambda函数,尽可能少依赖导入。 复制的函数: Lambda我测试和工作: 不起作用的熊猫的λ: 错误: 我猜它试图计算整个列,而不是逐行计算,我该如何解决这个问题?

  • 我想将我的自定义函数(它使用if-else梯形)应用到数据帧每行中的这六列(,,,,,)。 我已经尝试了不同的方法从其他问题,但似乎仍然不能找到正确的答案,我的问题。关键的一点是,如果这个人被算作西班牙裔,他们就不能算作其他任何东西。即使他们在另一个种族栏中有一个“1”,他们仍然被算作西班牙裔,而不是两个或两个以上的种族。类似地,如果所有ERI列的总和大于1,则被计为两个或两个以上的种族,不能被计

  • 问题内容: 我想知道是否有可能将另一个列添加到包含诸如min,max …之类的聚合函数的select语句中。 例子 : 这条语句在sql标准中是正确的吗(在mysql中是它的工作); 它在mysql中的工作,但我想我读到某处说,如果我将聚合函数放在select子句中,除了聚合函数,我什么都不能放,或者如果有group by,则分组列可以在select子句中(在mysql中) 编辑 : 我想从表中选

  • 问题内容: SQL查询是否可以返回一些常规列和一些聚合列? 喜欢 : 问题答案: 您应该使用group by语句。 GROUP BY语句与聚合函数结合使用,以按一个或多个列对结果集进行分组。 例如: 您可以在此处看到完整的示例。