我正在153,673*25
通过 Anaconda 的 Spyder(Python 2)中的 IPython 控制台使用 pandas 导入一个包含整数、浮点数和字符串的 csv 数据矩阵。然后,我想通过手动指定 pandaframe 列名和类型来将这些数据转换为结构化数组。下面是代码 - 函数importing_data.run()
,attributes_names.run()
分别导入 pandaframe 格式的 csv 数据,并将 pandaframe 的列名提取为列表:
import pandas
import numpy
import importing_data
import attributes_names
csv_data = importing_data.run()
names = attributes_names.run(csv_data)
type_list = ['int',
'str',
'str',
...
'float',
'int',
'int',
]
data_type = zip(names,type_list)
n_rows = len(csv_data.ix[:,0])
n_columns = len(csv_data.ix[0,:])
data_sample = numpy.zeros((n_rows,n_columns),dtype=data_type)
for i in range(0,n_columns):
column = csv_data.ix[:,i].values
data_sample[:,i] = column
然而,最后的循环似乎失败了:它有时会推动内核重新启动,而当它没有重新启动时,data_sample
数组有一个意想不到的结构;我不能准确地描述它,因为最近我只重启了内核,但我相信它是一个由维度列表153,673*25
组成的153,673
维度数组。
我在这里做错了什么?
编辑
我犯的第一个错误如下:而不是
data_sample = numpy.zeros((n_rows,n_columns),dtype=data_type)
我必须说:
data_sample = numpy.zeros((n_rows,1),dtype=data_type)
我重新定义了循环如下:
for i in range(0,n_rows):
data_sample[i,0] = csv_data.values[i,:]
但现在我收到以下错误消息:TypeError: expected a single-segment buffer object