Pandas to_csv将二维数组转为字符串的问题求助
解决CSV存储/读取句子嵌入向量的格式问题
CSV格式本身不支持直接存储数组类型,所以你用to_csv保存时,二维数组会被自动转为字符串格式。下面提供几种可行的解决办法:
方法1:读取时将字符串转回数组
利用Python的ast模块解析字符串格式的数组,把它还原为浮点型二维数组:
import ast import pandas as pd # 读取CSV文件 df = pd.read_csv('relevant_docs.csv') # 将et列的字符串转成数组 df['et'] = df['et'].apply(ast.literal_eval) # 同理处理ea列 df['ea'] = df['ea'].apply(ast.literal_eval)
如果数据中存在空值,可添加判断避免报错:
def str_to_array(s): if pd.isna(s): return None return ast.literal_eval(s) df['et'] = df['et'].apply(str_to_array)
方法2:存储前将数组序列化为JSON字符串
在保存CSV前,先把数组列转为JSON格式的字符串,读取时再解析回数组:
import json import pandas as pd # 存储前序列化数组列 relevant_df['et'] = relevant_df['et'].apply(json.dumps) relevant_df['ea'] = relevant_df['ea'].apply(json.dumps) relevant_df.to_csv('relevant_docs.csv', index=False) # 读取时解析JSON字符串 df = pd.read_csv('relevant_docs.csv') df['et'] = df['et'].apply(json.loads) df['ea'] = df['ea'].apply(json.loads)
方法3:用Pickle直接保存DataFrame(推荐)
如果不需要CSV的可读性,Pickle可以完整保留DataFrame的所有数据类型(包括数组),无需额外转换:
import pandas as pd # 保存为Pickle文件 relevant_df.to_pickle('relevant_docs.pkl') # 读取Pickle文件 df = pd.read_pickle('relevant_docs.pkl')
内容的提问来源于stack exchange,提问作者abhishekkuber
相关产品推荐
相关产品推荐

