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社区