如何从Snowpark DataFrame提取数组,保留list[str]类型而非转为字符串?
解决Snowpark DataFrame提取数组变为字符串的问题
当你从Snowpark DataFrame中提取数组类型字段时,若遇到collect()或to_pandas()后数组被转为JSON格式字符串的情况,可以通过以下方式将其转换为list[str]类型:
方法1:提取后用JSON解析
利用Python标准库json的loads()方法,将序列化后的字符串解析为列表:
import json from snowflake.snowpark import Session # 初始化会话(此处省略会话配置) session = Session.builder.configs(...).create() dataframe = session.create_dataframe([[["some", "data", "here"]]], ["data"]) collected_row = dataframe.collect()[0] # 解析JSON字符串为list[str] collected_array = json.loads(collected_row["data"]) print(type(collected_array)) # 输出: <class 'list'> print(collected_array) # 输出: ['some', 'data', 'here']
方法2:处理Pandas DataFrame场景
如果使用to_pandas()转换后列仍为字符串,可对目标列批量应用json.loads:
import json df_pandas = dataframe.to_pandas() # 将列中的每个JSON字符串解析为列表 df_pandas["data"] = df_pandas["data"].apply(json.loads) print(type(df_pandas["data"][0])) # 输出: <class 'list'> print(df_pandas["data"][0]) # 输出: ['some', 'data', 'here']
问题说明
Snowpark在将分布式DataFrame中的数组类型数据序列化到本地Python环境时,会默认转为JSON格式的字符串,因此需要手动解析才能得到预期的list[str]类型。
内容的提问来源于stack exchange,提问作者wgray
相关产品推荐
相关产品推荐

