我一直在尝试使用NumPy
模块解析CSV文件,如下所示,我必须硬编码dtype
,这也可以在下面看到。
def FileR(self,FileName):
data = [('SecurityInfo', 'S64'),
('Date', 'S64'),
('Cost', 'float'),
('Yield', 'float'),]
return data
def Gettheinfo(self):
the_info = np.loadtxt('the.csv', delimiter=',', skiprows = 1, dtype = self.FileR('the.csv'))
return the_info
有没有办法在没有硬编码np.loadtxt
的情况下使用data
?
由于
答案 0 :(得分:1)
我不知道您的文件是如何格式化的,但我假设它看起来像这样:
SecurityInfo,Date,Cost,Yield
a string,another string,11.50,2110.3
more,stuff,43.15,343
然后你可以使用更强大的numpy.genfromtxt
:
np.genfromtxt('abc.txt', delimiter=',', dtype=None, names=True)
dtype=None
会自动确定每列的dtype。
names=True
将从文件的第一行读取字段名称。
示例:
>>> np.genfromtxt('abc.txt', delimiter=',', dtype=None, names=True)
array([('a string', 'another string', 11.5, 2110.3),
('more', 'stuff', 43.15, 343.0)],
dtype=[('SecurityInfo', 'S8'), ('Date', 'S14'), ('Cost', '<f8'), ('Yield', '<f8')])