PySpark Dataframe:统一某些行

PySpark Dataframe:统一某些行,dataframe,pyspark,apache-spark-sql,pyspark-dataframes,Dataframe,Pyspark,Apache Spark Sql,Pyspark Dataframes,我搞不清楚这个 下面是一个简单的例子: +---+----+-----+ | Id|Rank|State+ +---+----+-----+ | a| 5| NJ + | a| 7| GA + | b| 8| CA + | b| 1| CA + +---+----+-----+ 我想格式化这个数据帧,如果同一个Id处于多个状态,那么让它只存储一个状态。在本例中,Id为“a”的任何行的状态都应为“NJ”,而不是“NJ”和“GA” 结果应该是: +---+----+

我搞不清楚这个

下面是一个简单的例子:

+---+----+-----+
| Id|Rank|State+
+---+----+-----+
|  a|   5|  NJ +
|  a|   7|  GA +
|  b|   8|  CA +
|  b|   1|  CA +
+---+----+-----+
我想格式化这个数据帧,如果同一个Id处于多个状态,那么让它只存储一个状态。在本例中,Id为“a”的任何行的状态都应为“NJ”,而不是“NJ”和“GA”

结果应该是:

+---+----+-----+
| Id|Rank|State+
+---+----+-----+
|  a|   5|  NJ +
|  a|   7|  NJ +
|  b|   8|  CA +
|  b|   1|  CA +
+---+----+-----+`

这是怎么做到的?谢谢

首先尝试
窗口功能,如:

w=Window().partitionBy(“Id”).orderBy(“秩”)
df.select(col(“Id”)、col(“Rank”)、first(“State”、True).over(w).别名(“NewState”))
这将根据id组中的排名将第一个状态放入
“NewState”
列。
如果您想使用纯SQL,同样的东西也可以很容易地表达出来

顺便说一句,欢迎来到StackOverflow社区