Python numpy.loadtxt,转换器错误
我正在尝试读取CSV的类型文件。它总结了一条日期线。 我像别人教我的那样写代码,但这是错误的。 我不知道为什么。请帮帮我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,),
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”。