我有一个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]
为什么会这样?我该如何解决这个问题?
答案 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]'
不是一种很好的格式,用于保存包含诸如数组或列表之类的对象的数据框作为元素。仅适用于简单数字和字符串的元素。