2017-10-18 12 views
0

で日付を変換するためにnumpyのloadtxtを使用しない私のコード:がpython3.6

import numpy as np 
import matplotlib.dates as mdates 

stockFile = 'HistoricalQuotes.csv' 

dates, close = np.loadtxt(stockFile, delimiter=',', unpack=True, usecols=(0,1), \ 
          converters = {0: mdates.strpdate2num('%Y-%m-%d')}) 
print("Dates = ", dates) 

とトレースバックを:

Traceback (most recent call last): 


File "/Users/zdlzdlxs/Documents/workspace/pynum_practice/part3/simplestats.py", line 7, in <module> 
    converters = {0: mdates.strpdate2num('%Y-%m-%d')}) 
    File "/Users/zdlzdlxs/Library/Python/3.6/lib/python/site-packages/numpy/lib/npyio.py", line 1024, in loadtxt 
    items = [conv(val) for (conv, val) in zip(converters, vals)] 
    File "/Users/zdlzdlxs/Library/Python/3.6/lib/python/site-packages/numpy/lib/npyio.py", line 1024, in <listcomp> 
    items = [conv(val) for (conv, val) in zip(converters, vals)] 
    File "/Users/zdlzdlxs/Library/Python/3.6/lib/python/site-packages/matplotlib/dates.py", line 287, in __call__ 
    return date2num(datetime.datetime(*time.strptime(s, self.fmt)[:6])) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_strptime.py", line 559, in _strptime_time 
    tt = _strptime(data_string, format)[0] 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_strptime.py", line 329, in _strptime 
    raise TypeError(msg.format(index, type(arg))) 
TypeError: strptime() argument 0 must be str, not <class 'bytes'> 

私はstackoverflowの中で解決策を見つけることを試みたが、失敗しました。 datetimeを正しく変換できる人はいますか?どうもありがとう。

+0

は、あなたが見たことがあります。https ://pythonprogramming.net/converting-date-stamps-matplotlib-tutorial/? –

+0

ありがとうございました。問題はうまく解決されました。 –

答えて

0

この日付変換ツールでは、Py3でユニコードの通常の文字列が必要です。しかしloadtxt負荷バイト文字列としてテキスト:

In [12]: mdates.strpdate2num('%Y-%m-%d')(b'1999-01-31') 
--------------------------------------------------------------------------- 
.... 
TypeError: strptime() argument 0 must be str, not <class 'bytes'> 

問題の世話をする必要がありますdecodeにバイト文字列をコンバータの変更:loadtxtで

In [13]: fn = lambda astr: mdates.strpdate2num('%Y-%m-%d')(astr.decode()) 

In [14]: fn(b'1999-01-01') 
Out[14]: 729755.0 

テスト:

In [15]: txt=b"""1999-01-01 
    ...: 2000-03-03 
    ...: 2015-12-12 
    ...: """ 

In [16]: np.loadtxt(txt.splitlines(), converters={0:fn}) 
Out[16]: array([ 729755., 730182., 735944.]) 
+0

ありがとうございました。それは完全に解決されました! –

+0

@Jackこの回答で問題が解決した場合は、それを受け入れる必要があります(その横にあるチェックマークをクリックしてください)。これは2つのことを行います。あなたの問題があなたの満足のために解決されたことを誰にでも知らせることができます。 [詳細はこちら](http://meta.stackexchange.com/a/5235)を参照してください。 –

関連する問題