Pyspark-是否可以使用count()和排序对数据进行分组?
我有一个以位置和性别作为字符串值的数据框,我想看看前20个位置的男女计数按降序排列。这是我到目前为止的代码,但它没有在desc中排序。我如何才能做到这一点Pyspark-是否可以使用count()和排序对数据进行分组?,pyspark,apache-spark-sql,Pyspark,Apache Spark Sql,我有一个以位置和性别作为字符串值的数据框,我想看看前20个位置的男女计数按降序排列。这是我到目前为止的代码,但它没有在desc中排序。我如何才能做到这一点 display(Markdown("**Top 20 locations** with highest active users split by sex ratio (in \%):")) pivotDF = datingDF.groupBy("location").pivot("sex&
display(Markdown("**Top 20 locations** with highest active users split by sex ratio (in \%):"))
pivotDF = datingDF.groupBy("location").pivot("sex"). count()
pivotDF.show(truncate=False)
+-------------------------+----+----+
|location |f |m |
+-------------------------+----+----+
|mill valley, california |176 |139 |
|london, united kingdom |null|1 |
|west oakland, california |3 |4 |
|freedom, california |1 |null|
|columbus, ohio |null|1 |
|rochester, michigan |1 |null|
|mountain view, california|106 |278 |
|magalia, california |null|1 |
|san rafael, california |340 |415 |
|nicasio, california |1 |2 |
|santa cruz, california |null|5 |
|moss beach, california |3 |5 |
|muir beach, california |null|1 |
|larkspur, california |35 |45 |
|san quentin, california |1 |1 |
|kentfield, california |7 |11 |
|montara, california |9 |3 |
|brooklyn, new york |1 |2 |
|utica, michigan |null|1 |
|burlingame, california |154 |207 |
+-------------------------+----+----+
我不知道您要按
f
和m
列之和或按多个列进行排序
orderBy(*cols,**kwargs)
返回按指定列排序的新数据帧
参数
cols–要排序的列或列名列表
升序–布尔值或布尔值列表(默认为True)。升序与降序排序。为多个排序顺序指定列表。如果
如果指定了列表,则列表的长度必须等于cols的长度
如果你想要一个上升,另一个下降,你可以这样做
datingDF.groupBy("location").pivot("sex").count().orderBy("F","M",ascending=[1,0])
谢谢你的编辑
pivotDF = pivotDF.orderBy(F.col('f').desc(), F.col('m').desc())
datingDF.groupBy("location").pivot("sex").count().orderBy("F","M",ascending=False)
datingDF.groupBy("location").pivot("sex").count().orderBy("F","M",ascending=[1,0])