我必须从每种类型(例如水或火等)攻击最高的数据帧中获得口袋妖怪的名字(“名称”代表一列,而“攻击”也是如此),我写下了这段代码:
PokDf.select('name').filter(PokDf.groupby('type1').agg({'attack'='max'})).show()
PokDf是DataFrame。
样品:
+----------+-----+------+
| name|type1|attack|
+----------+-----+------+
| Bulbasaur|grass| 49|
| Ivysaur|grass| 62|
| Venusaur|grass| 100|
|Charmander| fire| 52|
|Charmeleon| fire| 64|
| Charizard| fire| 104|
| Squirtle|water| 48|
| Wartortle|water| 63|
+----------+-----+------+
我不知道该如何处理。一旦运行此行,它就行不通了。有人可以帮我吗?
你可以使用一个window
计算max over a partition
,然后filter on attack=max
再select
你的name
专栏。
from pyspark.sql import functions as F
from pyspark.sql.window import Window
w=Window().partitionBy("type1")
df.withColumn("max",F.max("attack").over(w))\
.filter('attack=max').select("name").show()
#+---------+ #output based on sample data above.
#| name|
#+---------+
#| Venusaur|
#|Wartortle|
#|Charizard|
#+---------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句