我有一个像下面这样的DataFrame . 我需要根据现有列创建一个新列 .
col1 col2
a 1
a 2
b 1
c 1
d 1
d 2
输出数据框看起来像这样
col1 col2 col3 col4
a 1 1 2
a 2 1 2
b 1 0 1
c 1 0 1
d 1 1 2
d 2 1 2
我用来查找col3的逻辑是 if count of col1 > 1 和 col4 is max value of col2 .
我熟悉如何在sql中做到这一点 . 但是很难找到数据帧DSL的解决方案 . 任何帮助,将不胜感激 . 谢谢
3 回答
groupBy col1和聚合得到count和max . 然后你可以用原始数据帧回复它以获得你想要的结果
spark df具有名为 withColumn 的属性您可以根据需要添加任意数量的派生列 . 但该列未添加到现有DF,而是创建添加了列的新DF .
例如向数据添加静态日期
要添加col3,您可以在/时使用withcolumn:
要添加col4,已经提到的groupBy / max join应该完成这项工作: