Apache spark 如何从DataFrame apache spark中查找最大值字母表?
我正试图从熊猫数据帧整体上获取最大值字母表。我对它来自哪一行或哪一列不感兴趣。我只对数据帧中的单个最大值感兴趣 这就是它看起来的样子:Apache spark 如何从DataFrame apache spark中查找最大值字母表?,apache-spark,pyspark,spark-dataframe,bigdata,Apache Spark,Pyspark,Spark Dataframe,Bigdata,我正试图从熊猫数据帧整体上获取最大值字母表。我对它来自哪一行或哪一列不感兴趣。我只对数据帧中的单个最大值感兴趣 这就是它看起来的样子: id conditionName 1 C 2 b 3 A 4 A 5 A 预期结果是: |id|conditionName| +--+-------------+ | 3| A | | 4| A | | 5| A | +----------------+ 因为
id conditionName
1 C
2 b
3 A
4 A
5 A
预期结果是:
|id|conditionName|
+--+-------------+
| 3| A |
| 4| A |
| 5| A |
+----------------+
因为“A”是字母表的第一个字母
例外:“conditionName”不是数字列。聚合函数只能应用于数字列
我需要整个数据帧字母表字符的最大值。
我应该用什么,才能达到预期的效果
提前谢谢 您可以按字符串列对数据框进行排序,获取第一个值并使用它过滤原始数据:
从pyspark.sql.functions导入lower,desc,first
#我们需要lower(),因为排序字符串区分大小写
第一个字母=df.orderBy((较低(df[“条件]))\
.groupBy()\
.agg(第一个(“条件”)。别名(“条件”))\
.collect()[0][0]
filter(df[“条件”]==第一个字母).show()
#+---+---------+
#|id |条件|
#+---+---------+
#|3 | A|
#|4 | A|
#|5 | A|
#+---+---------+
或者更优雅地使用Spark SQL
:
df.registerTempTable("table")
sqlContext.sql("SELECT *
FROM table
WHERE lower(condition) = (SELECT min(lower(condition))
FROM table)
")
预期产量是多少?您对“字母表中的最大值”的定义是什么?对不起,我将编辑它,谢谢您的提醒!还不清楚为什么,是因为A是字母表的第一个字母,还是因为它的计数最高?因为A是字母表的第一个字母:)
df.registerTempTable("table")
sqlContext.sql("SELECT *
FROM table
WHERE lower(condition) = (SELECT min(lower(condition))
FROM table)
")