我有一个类似下面的dataFrame。
using System.Linq;
namespace WpfApp1
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
DataGrid1.ItemsSource = Enumerable.Range(1, 10).ToList();
}
}
}
使用上面的DataFrame,我想在下面生成新的DataFrame
<ListBox.ItemTemplate>
列应为: -
例如:
+---+---+-----+
|uId| Id| sum |
+---+---+-----+
| 3| 1| 1.0|
| 7| 1| 1.0|
| 1| 2| 3.0|
| 1| 1| 1.0|
| 6| 5| 1.0|
我的最终输出应该是:
Sum
答案 0 :(得分:2)
您可以使用Window
函数获取每组count
列的id
,最后使用该计数来划分原始sum
import org.apache.spark.sql.expressions.Window
val windowSpec = Window.partitionBy("id")
import org.apache.spark.sql.functions._
df.withColumn("sum", $"sum"/count("id").over(windowSpec))
您应该将最终dataframe
作为
+---+---+------------------+
|uId|Id |sum |
+---+---+------------------+
|3 |1 |0.3333333333333333|
|7 |1 |0.3333333333333333|
|1 |1 |0.3333333333333333|
|6 |5 |1.0 |
|1 |2 |3.0 |
+---+---+------------------+