apache-spark - 如何根据pyspark列表中的值获取索引
问题描述
我有一个如下列表
[[[Row(cola=53273831, colb=1197), Row(cola=15245438, colb=1198)], [Row(cola=53273831, colb=1198)]]]
在这里,我想搜索特定元素并获取它的索引值。前任:
mylist.index((([['53273831', '1198']])))
应该给我索引为1。但我收到错误
ValueError: [['53273831', '1198']] is not in list.
这是我正在使用的代码
df2=df.groupBy("order").agg(collect_list(struct(["id","node_id"])).alias("res"))
newrdd = df2.rdd.map(lambda x : (x))
order_info = newrdd.collectAsMap()
dict_values=(list(order_info.values()))
dict_keys=(list(order_info.keys()))
a=[[53273831, 1198]]
k2= dict_keys[dict_values.index(((a)))] # This line is givin
给我错误:ValueError:[['53273831','1198']]不在列表中
order_info 字典看起来像这样 {10160700: [Row(id=53273831, node_id=1197), Row(id=15245438, node_id=1198)], 101600201: [Row(iid=53273831, node_id=1198)]}
你能帮我从这个结构类型列表中获取索引值吗?
解决方案
元素是 Row 对象,而不是列表,因此需要指定 Row 对象。您还应该从 mylist[0] 获取索引,因为 mylist 是一个多层数组。
from pyspark.sql import Row
mylist = [[[Row(cola=53273831, colb=1197), Row(cola=15245438, colb=1198)], [Row(cola=53273831, colb=1198)]]]
id = mylist[0].index([Row(cola=53273831, colb=1198)])
会给你一个 1 的 id。
推荐阅读
- c++ - 具有位域的结构的 Consexpr 构造函数
- javascript - 在 Javascript/React 中格式化设备 ID 和日期
- sql - 在 Oracle 中计算并添加多列的总计行
- reactjs - 如何正确使用 react-datepicker dateFormat
- linux - 如何更新到 Amazon Linux 2 ECS 优化容器实例?
- java - 如何将对象的出现放入 Map 中?
- python - 对聚类感到困惑
- excel - 运行时错误 '440' - 对象不支持此方法
- html - 如何在新行上显示标签/值并显示另一个嵌套标签值对
- logging - 如何修复 Akka.Event.LogMessage 中的“输入字符串格式不正确”