pandas to_csv 函数将二维数组转换为单个字符串
我正在尝试预先计算句子的嵌入(也就是把句子转化为数字表示),并想把这些嵌入存储在一个csv文件里,以便以后可以重复使用。我创建了一个Pandas数据框,并且把嵌入正确地存储为一个二维的浮点数组(在et或ea这一列)。
relevant_df.head()
然后我运行to_csv函数把这些数据存储到内存中。当我加载这个csv文件时,二维数组变成了一个单一的字符串。因为这个原因,我无法使用这些嵌入。
relevant_df.to_csv('relevant_docs.csv', index=False)
df = pd.read_csv('relevant_docs.csv')
df.head()
任何帮助都会很感激。谢谢!
1 个回答
1
CSV文件是基于文本的,它本身不支持存储多维数组。
在保存或读取CSV时,你可以使用一些序列化工具,比如json,来将你的数组转换成可以存储的格式:
import pandas as pd
import json
# arrays to JSON
relevant_df['embeddings'] = relevant_df['embeddings'].apply(json.dumps)
relevant_df.to_csv('relevant_docs.csv', index=False)
def parse_array(arr_str):
return json.loads(arr_str)
df = pd.read_csv('relevant_docs.csv', converters={'embeddings': parse_array})