首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取嵌套列表中的前两个元素

获取嵌套列表中的前两个元素
EN

Stack Overflow用户
提问于 2018-03-18 18:33:24
回答 1查看 1.6K关注 0票数 0

假设我有一个清单L=[[a,2],[a,3],[a,4],[b,4],[b,8],[b,9]],我希望能够删除第三个元素,使它看起来如下所示:

代码语言:javascript
复制
[a,2]
[a,3]
[b,4]
[b,8]

我对火种很陌生,不知道我应该在这里做什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-19 03:35:25

你可以试试这样的东西。

第一步是groupby key列和列表中的聚合值。然后使用udf获取列表的前两个值,然后引爆该列。

代码语言:javascript
复制
df = sc.parallelize([('a',2),('a',3),('a',4),
                       ('b',4),('b',8),('b',9)]).toDF(['key', 'value'])
from pyspark.sql.functions import collect_list, udf, explode
from pyspark.sql.types import *

foo = udf(lambda x:x[0:2], ArrayType(IntegerType()))
df_list = (df.groupby('key').agg(collect_list('value')).
                   withColumn('values',foo('collect_list(value)')).
                   withColumn('value', explode('values')).
                   drop('values', 'collect_list(value)'))
df_list.show()

结果

代码语言:javascript
复制
+---+-----+
|key|value|
+---+-----+
|  b|    4|
|  b|    8|
|  a|    2|
|  a|    3|
+---+-----+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49351487

复制
相关文章

相似问题

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