Python numpy.loadtxt,转换器错误

Python numpy.loadtxt,转换器错误,python,csv,numpy,Python,Csv,Numpy,我正在尝试读取CSV的类型文件。它总结了一条日期线。 我像别人教我的那样写代码,但这是错误的。 我不知道为什么。请帮帮我 from matplotlib.dates import strpdate2num import matplotlib.pyplot as plt import pandas as pd import numpy as np import os dates=np.loadtxt('data.csv',delimiter=',',usecols=(1,),

我正在尝试读取CSV的类型文件。它总结了一条日期线。 我像别人教我的那样写代码,但这是错误的。 我不知道为什么。请帮帮我

from matplotlib.dates import strpdate2num
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import os
dates=np.loadtxt('data.csv',delimiter=',',usecols=(1,),
                 converters={ 1:strpdate2num('%d-%m-%Y')})
错误信息如下所示:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-24-e58dd0485173> in <module>()
      1 dates=np.loadtxt('data.csv',delimiter=',',usecols=(1,),
----> 2                  converters={ 1:strpdate2num('%d-%m-%Y')})

C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py in loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)
    928 
    929             # Convert each value according to its column and store
--> 930             items = [conv(val) for (conv, val) in zip(converters, vals)]
    931             # Then pack it according to the dtype's nesting
    932             items = pack_items(items, packing)

C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py in <listcomp>(.0)
    928 
    929             # Convert each value according to its column and store
--> 930             items = [conv(val) for (conv, val) in zip(converters, vals)]
    931             # Then pack it according to the dtype's nesting
    932             items = pack_items(items, packing)

C:\Anaconda3\lib\site-packages\matplotlib\dates.py in __call__(self, s)
    285            return value: a date2num float
    286         """
--> 287         return date2num(datetime.datetime(*time.strptime(s, self.fmt)[:6]))
    288 
    289 

C:\Anaconda3\lib\_strptime.py in _strptime_time(data_string, format)
    557     """Return a time struct based on the input string and the
    558     format string."""
--> 559     tt = _strptime(data_string, format)[0]
    560     return time.struct_time(tt[:time._STRUCT_TM_ITEMS])
    561 

C:\Anaconda3\lib\_strptime.py in _strptime(data_string, format)
    327         if not isinstance(arg, str):
    328             msg = "strptime() argument {} must be str, not {}"
--> 329             raise TypeError(msg.format(index, type(arg)))
    330 
    331     global _TimeRE_cache, _regex_cache

TypeError: strptime() argument 0 must be str, not <class 'bytes'>
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
1日期=np.loadtxt('data.csv',分隔符=',',usecols=(1,),
---->2个转换器={1:strpdate2num(“%d-%m-%Y”)}
loadtxt中的C:\Anaconda3\lib\site packages\numpy\lib\npyio.py(fname、dtype、注释、分隔符、转换器、skiprows、usecols、unpack、ndmin)
928
929#根据列转换每个值并存储
-->930项=[zip(转换器,val)中(conv,val)的conv(val)]
931#然后根据数据类型的嵌套进行打包
932件=包装件(件,包装)
C:\Anaconda3\lib\site packages\numpy\lib\npyio.py in(.0)
928
929#根据列转换每个值并存储
-->930项=[zip(转换器,val)中(conv,val)的conv(val)]
931#然后根据数据类型的嵌套进行打包
932件=包装件(件,包装)
C:\Anaconda3\lib\site packages\matplotlib\dates.py在调用中(self,s)
285返回值:date2num浮点
286         """
-->287返回日期2num(datetime.datetime(*time.strtime(s,self.fmt)[:6]))
288
289
C:\Anaconda3\lib\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
557“”返回基于输入字符串和
558格式字符串。”“”
-->559 tt=_strptime(数据字符串,格式)[0]
560返回时间.struct\u time(tt[:time.\u struct\u TM\u ITEMS])
561
C:\Anaconda3\lib\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ strptime.py in \\ strptime(数据\字符串,格式)
327如果不存在(arg,str):
328 msg=“strtime()参数{}必须是str,而不是{}”
-->329 raise type错误(消息格式(索引,类型(arg)))
330
331全局时间缓存,正则表达式缓存
TypeError:strTime()参数0必须是str,而不是
试试这个:

from matplotlib.dates import bytespdate2num
dates=np.loadtxt('data.csv',delimiter=',',usecols=(1,),
             converters={ 1:bytespdate2num('%d-%m-%Y')})
试试这个:

from matplotlib.dates import bytespdate2num
dates=np.loadtxt('data.csv',delimiter=',',usecols=(1,),
             converters={ 1:bytespdate2num('%d-%m-%Y')})

几年前这里有人问过一个问题,建议使用
bytespdate2num()
。请在您的帖子中添加
python3
标记,因为python版本似乎与此相关。在python3中
loadtxt
以bytestring模式打开文件。转换器必须使用该模式。类似的解决方案使用常规的
datetime
转换器加上显式的
decode
,几年前这里已经提出了一个问题建议使用
bytespdate2num()
。请在您的帖子中添加
python3
标记,因为python版本似乎与此相关。在python3中
loadtxt
以bytestring模式打开文件。转换器必须使用该模式。类似的解决方案使用常规的
datetime
转换器加上显式的
decode
,您能解释一下有什么变化吗python2和python3之间的np.loadtxt中的d,因为python2和python3具有不同的字符。该链接可能会有帮助。请在您的帖子中添加解释。这是一个有效的解决方案,但如果它还解释了为什么strpdate2num在python3中不起作用而Bytepdate2num在python3中起作用的一些原因,则会更好。谢谢我尝试你的答案并解决了这个问题。结果是:数组([ 734165., 734168., 734169., 734170., 734171., 734172., 734175., 734176., 734177., 734178., 734179., 734182., 734183., 734184., 734185., 734186., 734190., 734191., 734192., 734193., 734196., 734197., 734198., 734199., 734200., 734203., 734204., 734205., 734206., 734207.])如何将这些数组因子转换为日期形式,如“星期一:0,星期二:1,…”,或者类似于python可以识别的“21-06-2011”。请您解释一下python2和python3之间的np.loadtxt中发生了什么变化,因为python2和python3具有不同的字符。该链接可能会有帮助。您可以在pos中添加解释吗t、 这是一个有效的解决方案,但如果它也解释了为什么strpdate2num在Python3中不起作用而bytepdate2num在Python3中不起作用的一些原因,那就更好了。谢谢!我尝试了你的答案并解决了这个问题。结果是:array([ 734165., 734168., 734169., 734170., 734171., 734172., 734175., 734176., 734177., 734178., 734179., 734182., 734183., 734184., 734185., 734186., 734190., 734191., 734192., 734193., 734196., 734197., 734198., 734199., 734200., 734203., 734204., 734205., 734206., 734207.])如何将这些数组因子转换为日期形式,如“星期一:0,星期二:1,…”,或者类似于python可以识别的“21-06-2011”。