我有以下问题:
A
、B
或 C 的 col1
的数据
帧
。 整数
的第二个 col2
。 col3
、col4
和 col5
(这些列也命名为 A
、B
和 C
)。因此
col1 - col2 - A (col3) - B (col4) - C (col5)
|--------------------------------------------
A 6
B 5
C 6
应获得
col1 - col2 - A (col3) - B (col4) - C (col5)
|--------------------------------------------
A 6 6
B 5 5
C 6 6
现在我想遍历每一行,并根据 col1
中的条目将 col2
中的整数分配给列 A、B 或 C。
如何实现此目的?
< code>df.withColumn()我不能使用(或者至少我不知道为什么),对于< code>val df2 = df.map(x =
提前期待您的帮助和感谢!
最好的,肯
在键列和目标列之间创建映射:
val mapping = Seq(("A", "col3"), ("B", "col4"), ("C", "col5"))
使用它生成列序列:
import org.apache.spark.sql.functions.when
val exprs = mapping.map { case (key, target) =>
when($"col1" === key, $"col2").alias(target) }
预置星标并选择:
val df = Seq(("A", 6), ("B", 5), ("C", 6)).toDF("col1", "col2")
df.select($"*" +: exprs: _*)
结果是:
+----+----+----+----+----+
|col1|col2|col3|col4|col5|
+----+----+----+----+----+
| A| 6| 6|null|null|
| B| 5|null| 5|null|
| C| 6|null|null| 6|
+----+----+----+----+----+
...但我得到: 我不知道如何应用这些信息。首先,我认为我需要为列表声明一些额外的映射(在同一个映射器类中),所以MapStruct知道如何像这样映射列表类型的每个字段: ...但我收到错误消息
我正在使用pyspark下面是我的数据
我有下面提到的表,我想通过查询添加列,这将增加一列到表的值对其他列特定值考虑以下表 在这个表中,在1前面想要文本作为活动,在零(0)前面,我想要它作为列名状态的非活动。
问题内容: 我目前有一张看起来像这样的表: 我需要做的是获得“ 费率”列的信息,但每个名称仅获得一次。例如,我有三行John Doe,每行的比率为8。我需要将这些行的比率设为8,而不是24,因此它为每组名称都对比率进行一次计数。 当然是行不通的,因为我试图对比率列而不是名称求和。我知道在对单个记录进行计数时,我可以使用,这就是我试图从中得到的行为类型。 我怎样才能为每个名字获得一个比率? 提前致谢
试图在熊猫中复制一个简单的Excel函数,但没有成功。还没有尝试np.where(),因为我想学习lambda函数,尽可能少依赖导入。 复制的函数: Lambda我测试和工作: 不起作用的熊猫的λ: 错误: 我猜它试图计算整个列,而不是逐行计算,我该如何解决这个问题?
我有一个表(“table1”),有3列,分别称为col1、col2和col3(每个列都是VARCHAR),其中有4个值,如下所示: 我需要能够在任何时候将数据添加到任何列中,而不影响其他列。互联网上非常流行的代码是(比如,我们只需要在col2和col3列中添加数据): 但它添加了新行,如下所示: 我真正需要的是用新值填充列“col1”中以值“datA2”开头的行,并得到如下表: 该表有3列,每列对