我有以下代码:
from numpy import genfromtxt
nysedatafile = os.getcwd() + '/nyse.txt';
nysedata = genfromtxt(nysedatafile, delimiter='\t', names=True, dtype=None);
nasdaqdatafile = os.getcwd() + '/nasdaq.txt';
nasdaqdata = genfromtxt(nasdaqdatafile, delimiter='\t', names=True, dtype=None);
现在我想合并来自2个CSV的数据,并尝试了各种功能:
例如:
^{pr2}$退货:
TypeError: invalid type promotion
我也尝试了numpy.vstack
并尝试调用它的数组。
我希望最后一次打印会给出前两个csv文件的行的总和。在
编辑: 此命令:
print('NYSE shape:' + str(nysedata.shape));
print('NASDAQ shape:' + str(nasdaqdata.shape));
print('NYSE dtype:' + str(nysedata.dtype));
print('NASDAQ dtype:' + str(nasdaqdata.dtype));
退货:
NYSE shape:(3257,)
NASDAQ shape:(2719,)
NYSE dtype:[('Symbol', 'S14'), ('Name', 'S62'), ('LastSale', 'S9'), ('MarketCap', '<f8'), ('ADR_TSO', 'S3'), ('IPOyear', 'S4'), ('Sector', 'S21'), ('industry', 'S62'), ('Summary_Quote', 'S38')]
NASDAQ dtype:[('Symbol', 'S14'), ('Name', 'S62'), ('LastSale', 'S7'), ('MarketCap', '<f8'), ('ADR_TSO', 'S3'), ('IPOyear', 'S4'), ('Sector', 'S21'), ('industry', 'S62'), ('Summary_Quote', 'S34')]
np.vstack
(或np.concatenate
)引发错误的原因是这两个数组的数据类型不匹配。在注意最后一个字段:}。nysedata的
('Summary_Quote', 'S38')
与{Summary_Quote
列的长度为38字节,而nasdaqdata
列的长度仅为34字节。 (编辑:LastSale
列也遇到了类似的问题。)发生这种情况是因为
genfromtxt
在设置dtype = None
参数时猜测列的数据类型。对于字符串列,genfromtxt
确定需要包含的最小字节数 该列中的所有字符串。在因此,要堆叠这两个数组,必须将较小的数组升级为较大的数组的数据类型:
(我以前的回答np.vstack公司. 这将产生一个二维形状数组(N,1)。
recfunctions.stack_arrays
返回形状(N,)的一维数组。由于nysedata
和nasdaqdata
是一维的,我认为最好也返回一维数组。)可能更简单的解决方案是先连接两个csv文件,然后调用
^{pr2}$genfromtxt
:相关问题 更多 >
编程相关推荐