你好,我的问题如下。
"test"
)test.csv
)read_csv
保存的csv文件。pd.read_csv("test.csv")
'[[0. 0. 0. 0.123333. 0.\n 0.]\n
[0. 0. 0.\n 0.123333. 0. 0.]\n
[0. 0.222222. 0. 0.333333. 0. 0.]]'
test = pd.read_csv("test.csv")
np.array(literal_eval(test["vector"][0]))
我得到这个错误
File "<unknown>", line 1
[[0. 0. 0. 0. 0. 0.
^
SyntaxError: invalid syntax
这里我链接了我使用的文件的下载。https:/drive.google.comfiled1MnJjPb-Gj_44dRXUHbNO64b-Z-wSrHScview?usp=共享。
创建矢量并放入df的代码。
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer()
tfidf_vectorizer.fit_transform(["example text","this is the list of words","like this"]).toarray()
datadd = [["example text"],["this is the list of words"],["like this"]]
vector = []
for example in datadd:
vector.append(tfidf_vectorizer.transform(example).toarray())
pd.DataFrame({"vector":vector})
pd.to_csv("test.csv")
vector
是一个 <class 'scipy.sparse.csr.csr_matrix'>
list
前,将其加载到数据框架中申请 literal_eval
到整个列,当读取文件中。
import pandas as pd
import numpy as np
from ast import literal_eval
# before writing vector to a dataframe
vector = np.array(vector).tolist()
df = pd.DataFrame({"vector": vector})
df.to_csv("test.csv", index=False)
# after reading the csv file in
test = pd.read_csv('test.csv', converters={'vector': literal_eval})
print(type(test.iloc[0, 0]))
>>> <class 'list'>
csv文件是一个纯文本文件。只要用文本编辑器打开它,比如notepad++、vi,如果你使用的是Windows,甚至是记事本。也就是说,保存在csv文件中的,对于每个单元格来说只是它的文本表示。
潘达斯 read_csv
聪明到可以识别浮点和整数值,但不能识别列表、集合或numpy数组。对于日期值, parse_dates
参数可以提供帮助,但是AFAIK,对于numpy数组没有任何帮助。另外,在pandas列中存储numpy数组(或列表或其他复杂的对象)并不是一个很聪明的想法,因为pandas将永远无法对它使用其向量化方法。长话短说,IMHO,在pandas中存储复杂对象是误用工具。
遗憾的是,我不知道有什么简单的方法可以将字符串表示法(如从 str(arr)
)返回到numpy数组中。所以如果你想用这种方式,你必须在 Python 中为它写一个解析器,然后用 apply
它的大熊猫列。