使用熊猫从csv文件保存和检索时丢失numpy数组尺寸

时间:2020-11-08 20:28:25

标签: python pandas numpy csv

我有一个numpy.array数据类型,我想用熊猫将其写入.csv文件,所以我运行以下命令:

data = numpy.array([1, 2, 3, 4, 5, 6])
print(data)
print((data.shape))

df = pd.DataFrame(columns = ['content'])
df.loc[0, 'content'] = data
df.to_csv('data.csv', index = False)
print(df.head())

>>> [1 2 3 4 5 6]
>>> (6,)
>>>                content
     0  [1, 2, 3, 4, 5, 6]

从输出中可以看到,numpy数组的尺寸为(6,)。
但是问题是,当我从.csv文件数组维丢失中检索到它并更改为()

data = pd.read_csv('data.csv')
val = numpy.array(data['content'][0])
print(val.shape)
print(val)
>>> ()
>>> [1 2 3 4 5 6]

为什么会这样?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

'     bye'

原始数据框:

In [46]: import pandas as pd
In [47]: data = np.arange(1,7)
In [48]: data.shape
Out[48]: (6,)
数据帧中的

In [49]: df = pd.DataFrame(columns = ['content']) ...: df.loc[0, 'content'] = data In [50]: df Out[50]: content 0 [1, 2, 3, 4, 5, 6] In [52]: df.to_numpy() Out[52]: array([[array([1, 2, 3, 4, 5, 6])]], dtype=object) 生成2d数组,这里有1个元素,而该元素本身就是一个数组。

to_numpy

查看整个文件,而不仅仅是文件头:

In [54]: df.to_numpy()[0,0]
Out[54]: array([1, 2, 3, 4, 5, 6])

第二行是In [55]: df.to_csv('data.csv', index = False) In [56]: cat data.csv content [1 2 3 4 5 6] 显示-带有str(data)并且没有逗号

[]将其作为字符串加载。它不会尝试将其转换为数组。不能。

read_csv

In [57]: d = pd.read_csv('data.csv') In [58]: d Out[58]: content 0 [1 2 3 4 5 6] In [59]: d.to_numpy() Out[59]: array([['[1 2 3 4 5 6]']], dtype=object) In [60]: d.to_numpy()[0,0] Out[60]: '[1 2 3 4 5 6]' 不是一种很好的格式,用于保存包含诸如数组或列表之类的对象的数据框作为元素。仅适用于简单数字和字符串的元素。