2017-01-29 41 views
0

我試圖從CSV文件加載數據,並將一列與日期轉換爲一週數。我得到下面提到TypeError將loadtxt列轉換爲星期幾:TypeError:strptime()參數1必須是str,而不是字節

import numpy as np 

from datetime import datetime 

def datestr2num(s): 
    return datetime.strptime(s, "%d-%m-%Y").date().weekday() 

dates, close = np.loadtxt(
    'data.csv', delimiter=',', usecols=(1,6), 
    converters={1: datestr2num}, unpack=True) 

print("Dates =", dates) 

錯誤:

TypeError: strptime() argument 1 must be str, not bytes 

我試圖關於Python 3.5.2 -Anaconda定製(64位)

+0

'loadtxt'不返回一個元組? https://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html – ppasler

回答

2

轉換器被賦予執行該程序生成bytes從文件中讀取的值;如果要將它們解析爲日期時間值,則需要先將它們解碼爲字符串。 ASCII應該足以作爲你的輸入是一系列的數字和破折號,形成日期:

def datestr2num(s): 
    s = s.decode('ascii') 
    return datetime.strptime(s, "%d-%m-%Y").weekday() 

注:我刪除了.date()通話; datetime對象直接支持datetime.weekday() method

+0

不應該有'csv'文件是純文本? – ppasler

+0

謝謝先生.....理解問題 – Niko

+0

@ppasler:'numpy.loadtxt()'在使用轉換器時不解碼字節。 –

相關問題