我在多个问题中发现此错误,但它不是固定的,也不是解释性的。使用loadtxt在单个str列中读取
我对以下行(import numpy as np)有问题
symbols = np.loadtxt('filename.csv',
dtype={'names': ('ticker', 'year', 'month','day'),
'formats': ('S10','i4','i2','i2')},
delimiter=',',skiprows=1, usecols=(0,))
Run Code Online (Sandbox Code Playgroud)
具有以下数据
ticker year month day
GPD.TO 2010 8 16
HAO.V 2010 8 16
RDS.V 2010 8 16
MD.V 2010 8 16
Run Code Online (Sandbox Code Playgroud)
它给了我一个
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
当我在没有该行的情况下usecols正常运行并返回所有4列正常。
我在Google和Stackoverflow上查看了许多其他问题,但这没有得到回答
如果要与使用usecols = (0,),np.loadtxt则必须更改dtype以匹配:
import numpy as np
symbols = np.loadtxt('filename.csv',
dtype={'names': ('ticker', ),
'formats': ('S10',)},
delimiter=',',
skiprows=1,
usecols=(0,)
)
print(symbols)
Run Code Online (Sandbox Code Playgroud)
与filename.csv:
ticker,year,month,day
GPD.TO,2010,8,16
HAO.V,2010,8,16
RDS.V,2010,8,16
MD.V,2010,8,16
Run Code Online (Sandbox Code Playgroud)
产量
[('GPD.TO',) ('HAO.V',) ('RDS.V',) ('MD.V',)]
Run Code Online (Sandbox Code Playgroud)
或者,np.genfromtxt您无需更改dtype:
symbols = np.genfromtxt('filename.csv',
dtype={'names': ('ticker', 'year', 'month','day'),
'formats': ('S10','i4','i2','i2')},
delimiter=',',
skiprows=1,
usecols=(0,)
)
Run Code Online (Sandbox Code Playgroud)
也可以。