Numpy “结婚日期”;TypeError:必须是str,而不是bytes";使用python 3.4

Numpy “结婚日期”;TypeError:必须是str,而不是bytes";使用python 3.4,numpy,Numpy,这是我的第一个Numpy项目,我真的不知道我做错了什么。我想将csv中的日期字段从“2015-08-04 02:14:05.249392”转换为“2015-08-04”。我真的不明白这个错误。有人能告诉我我做错了什么吗 这是数据 2015-08-04 2:14:05.249392,AA,0.0193103612,0.0193515212,0.0249713335,30.6542480634,30.7195875454,39.640763021,0.2131498442,29.0406746589

这是我的第一个Numpy项目,我真的不知道我做错了什么。我想将csv中的日期字段从“2015-08-04 02:14:05.249392”转换为“2015-08-04”。我真的不明白这个错误。有人能告诉我我做错了什么吗

这是数据

2015-08-04 2:14:05.249392,AA,0.0193103612,0.0193515212,0.0249713335,30.6542480634,30.7195875454,39.640763021,0.2131498442,29.0406746589,13524.5347810182,89,57,99
这是密码

import numpy as np

from datetime import datetime
from datetime import date,time

datefunc = lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M:%S.%f')

a =  np.genfromtxt('/home/dave/Desktop/development/hvanal2016.csv',delimiter = ',',
               converters = {0:datefunc},dtype='object,str,float,float,float,float,float,float,float,float,float,float,float,float',
               names = ["date","sym","20sd","10sd","5sd","hv20","hv10","hv5","2010hv","105hv","abshv","2010rank","105rank","absrank"])

print(a["date"])
print(a["sym"])
print(a["20sd"])
print(a["hv20"])
print(a["absrank"])
这里是错误

   Traceback (most recent call last):
   File "/home/dave/3 9 15 my slope.py", line 13, in <module>
      names = 
     ["date","sym","20sd","10sd","5sd","hv20","hv10","hv5","2010hv","105hv","abshv","2010rank","105rank","absrank"])
   File "/usr/lib/python3/dist-packages/numpy/lib/npyio.py", line 1691, 
in genfromtxt
   for (i, converter) in enumerate(converters)]))
   File "/usr/lib/python3/dist-packages/numpy/lib/npyio.py", line 1691, 
in <listcomp>
    for (i, converter) in enumerate(converters)]))
  File "/usr/lib/python3/dist-packages/numpy/lib/npyio.py", line 1690, 
 in <listcomp>
    rows = list(zip(*[[converter._loose_call(_r) for _r in 
  map(itemgetter(i), rows)]
  File "/usr/lib/python3/dist-packages/numpy/lib/_iotools.py", line 
  657, in _loose_call
     return self.func(value)
   File "/home/dave/3 9 15 my slope.py", line 7, in <lambda>
      datefunc = lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M:%S.%f')
 TypeError: must be str, not bytes
回溯(最近一次呼叫最后一次):
文件“/home/dave/3 9 15 my slope.py”,第13行,在
姓名=
[“日期”、“符号”、“20sd”、“10sd”、“5sd”、“hv20”、“hv10”、“hv5”、“2010hv”、“105hv”、“abshv”、“2010rank”、“105rank”、“absrank”])
文件“/usr/lib/python3/dist-packages/numpy/lib/npyio.py”,第1691行,
在genfromtxt中
对于枚举(转换器)])中的(i,转换器)
文件“/usr/lib/python3/dist-packages/numpy/lib/npyio.py”,第1691行,
在里面
对于枚举(转换器)])中的(i,转换器)
文件“/usr/lib/python3/dist-packages/numpy/lib/npyio.py”,第1690行,
在里面
行=列表(zip(*[[converter.\u loose\u调用(\u r)for \u r in
映射(itemgetter(i),行)]
文件“/usr/lib/python3/dist packages/numpy/lib/_iotools.py”,第行
657,打电话
返回self.func(值)
文件“/home/dave/3 9 15 my slope.py”,第7行,在
datefunc=lambda x:datetime.strTime(x,“%Y-%m-%d%H:%m:%S.%f”)
TypeError:必须是str,而不是bytes

问题可能是
np.genfromtxt
生成字节字符串,而不是unicode字符串。因此,在将传入值解析为日期之前,必须将其转换为
str

类似于以下的方法应该可以工作:

datefunc = lambda x: datetime.strptime(x.decode("utf-8"), '%Y-%m-%d %H:%M:%S.%f')

问题可能是
np.genfromtxt
生成的是字节字符串,而不是unicode字符串。因此,在将传入值解析为日期之前,必须将其转换为
str

类似于以下的方法应该可以工作:

datefunc = lambda x: datetime.strptime(x.decode("utf-8"), '%Y-%m-%d %H:%M:%S.%f')

感谢@donkopotamus真的很好的帮助一直到csv的最后一行,然后它被这个UnicodeDecodeError甩了:“utf-32-le”编解码器无法解码位置0-3的字节:代码点不在范围内(0x110000)您使用的是正确的
decode()
对于您的文件格式?可能您的文件中有一个奇怪的终止字符…捕获异常并查看文本是什么…嘿,我没有基本的愚蠢!这是打印语句。我将尝试将其整理出来,因为我占用了您太多的时间。非常感谢您的大力帮助,我永远不会进行排序谢谢@donkopotamus真的很好的帮助一直到csv的最后一行,然后它被这个UnicodedeCodeer错误甩了:“utf-32-le”编解码器无法解码0-3位的字节:代码点不在范围内(0x110000)您使用的是正确的
解码()吗
对于您的文件格式?可能您的文件中有一个奇怪的终止字符…捕获异常并查看文本是什么…嘿,我没有基本的愚蠢!这是打印语句。我将尝试将其整理出来,因为我占用了您太多的时间。非常感谢您的大力帮助,我永远不会进行排序在没有你指导的情况下,我把它解决了。在试图解决问题时,我使用了
StringIO
来模拟你的输入,因此错过了@donkopotamus发现的内容。但我随后注意到
a[“sym”]
不使用字符串
AA
。通过
genfromtxt
输入的实际文件是否也有相同的问题?@roadrunner66我确实有。我本来打算明天再做的,因为我的咖啡已经喝完了,作为一个真正的笨蛋,我需要所有能得到的帮助。谢谢你关注我最初的问题,但是精彩的donkopotamus是第一次拿到的好吧,那么我有理由再看一眼。我很感兴趣,因为我一直在使用类似的代码,但通常我的东西都比较笨拙。完全公开我从一个例子中偷了代码我的代码太可怜了,无法用语言表达。@roadrunner66嘿,你有什么收获吗?我得到了unicodeDecodeError:“utf-32-le”编解码器无法解码位置0-3中的字节:代码点不在范围内(0x110000)无任何“解决方案”我发现对我来说有任何意义,因为它们似乎过于复杂,而我在试图解决问题时使用了
StringIO
来模拟您的输入,因此错过了@donkopotamus发现的内容。但随后我注意到
a[“sym”]
不使用字符串
AA
。通过
genfromtxt
输入的实际文件是否也有相同的问题?@roadrunner66我确实有。我本来打算明天再做的,因为我的咖啡已经喝完了,作为一个真正的笨蛋,我需要所有能得到的帮助。谢谢你关注我最初的问题,但是精彩的donkopotamus是第一次拿到的好吧,那么我有理由再看一眼。我很感兴趣,因为我一直在使用类似的代码,但通常我的东西都比较笨拙。完全公开我从一个例子中偷了代码我的代码太可怜了,无法用语言表达。@roadrunner66嘿,你有什么收获吗?我得到了unicodeDecodeError:“utf-32-le”编解码器无法解码位置0-3的字节:代码点不在范围内(0x110000)。我发现的任何“解决方案”对我来说都没有任何意义,因为它们似乎过于复杂