PySpark中如何从collect生成的列表提取Row中的指定值?
提取PySpark Row中的文件名值
嘿,这事儿好办!咱们一步步来拆解:
首先,你得先搞清楚my_list[0]的结构——它是一个包含单个Row对象的列表,所以第一步得先把这个Row对象取出来。接下来因为你的字段名带空格、括号这些特殊字符,没法直接用.语法访问,得用字典式的方式来取值。
给你几种实用的方法:
方法1:直接通过字段名(字典式访问)
这是最直接的方式,明确指定字段名来取值:
# 先从列表里取出Row对象 target_row = my_list[0][0] # 用字段名作为键获取值 file_name = target_row['Specific Name/Path (to be updated)'] print(file_name) # 输出: Monitoring_file_hourely.csv
方法2:把Row转成字典后取值
如果后续还要多次操作这个Row里的内容,转成字典会更灵活:
row_dict = my_list[0][0].asDict() file_name = row_dict['Specific Name/Path (to be updated)']
方法3:直接取Row的第一个值(适合字段唯一的情况)
如果你的Row里只有这一个字段,也可以不用写长长的字段名,直接取第一个值:
# Python 2里可以这么写 file_name = my_list[0][0].values()[0] # Python 3里推荐用迭代器的方式,避免索引报错 file_name = next(iter(my_list[0][0].values()))
小提醒
为什么不能用target_row.Specific Name/Path (to be updated)这种写法?因为Python的标识符(变量名、属性名)不能包含空格、括号、斜杠这些特殊字符,所以点语法在这里行不通,必须用字典式的键访问~
内容的提问来源于stack exchange,提问作者Bharat Sharma
相关产品推荐
相关产品推荐

