我有以下数据框
index word decoded_Word language
0 potato [17, 24, 1, 21, 1, 24] english
1 animal [21, 13, 23, 18, 21, 25] english
2 שלום ... hebrew
我想将其转换为 csv 文件,我使用了以下行
df.to_csv('dataset.csv',encoding='utf8',index=False)
并获取以下文件
potato,[17 24 1 21 1 24],english
animals,[21 13 23 18 21 25 4],english
שלום,[21 12 6 24],hebrew
但是当我执行以下代码时,我得到了
data = pd.read_csv('dataset.csv')
print(type(data['decoded_word'][0]))
结果是str
我想知道是否有更好的方法来保存/加载 numpy 数组。
谢谢。
最佳答案
这是正常的,因为 pandas 不会将列的格式存储在 csv 文件中,并且它只能推断出这么多。
为了简单地解决这个问题,加载数据集后(因此在data = pd.read_csv('dataset.csv')
之后)执行以下操作:
data[decoded_word] = data[decoded_word].astype(list)
这会将列的类型更改为列表
。您也可以将其转换为 numpy.ndarray
。
如果您可以的话,另一种选择是以另一种格式存储数据帧,例如 pickle:
data.to_pickle('dataset.pkl')
这应该保留列类型。
注意:我看到一条评论表明您应该使用eval
。这应该也有效,但是,作为一项规则,我宁愿永远不要使用 eval 来操作数据,除非这是唯一的方法并且您非常确定不存在安全威胁。
关于python - 将 numpy 数组作为 Pandas 中的列保存/加载到 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68336649/