首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不知道如何从包含其他列条件的列中获得值

我不知道如何从包含其他列条件的列中获得值
EN

Stack Overflow用户
提问于 2020-04-27 19:03:24
回答 1查看 27关注 0票数 1

我必须从Dataframe那里获得Pokemon的名称,而Dataframe对每种类型(例如水或火等)都有最高级的攻击(“name”表示一列,也表示“攻击”),我写下了以下代码:

代码语言:javascript
复制
PokDf.select('name').filter(PokDf.groupby('type1').agg({'attack'='max'})).show()

PokDf是DataFrame。

示例:

代码语言:javascript
复制
+----------+-----+------+
|      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|
+----------+-----+------+

我不知道该怎么处理。一旦我运行了这一行,它就不工作了。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-27 22:55:55

您可以使用window来计算max over a partition,,然后使用filter on attack=max,然后使用select来计算name列。

代码语言:javascript
复制
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|
#+---------+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61466445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档