python - 将 numpy 数组作为 Pandas 中的列保存/加载到 csv 文件

标签 python pandas numpy csv

我有以下数据框

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/

相关文章:

python NumPy : Change the column type of a numpy matrix

Python3.3 : Square-root optimization

python - 当只能进行相等比较时,对 python 列表中的唯一项进行分组

python - 删除不包含数字的列名

python - 编译Boost.Numpy时CMake错误 "NumPy import failure"

python - 组内加权 zscore

python - Scrapy CSS 选择器忽略标签并仅获取文本

python - 在子类中打印 python List

python - 我编写了保存数据框的代码,但它工作不正确

python - Pandas groupby 和 value_counts