0
我使用numpy.genfromtxt
加載文件以及一些字段是日期格式,但是,當我安裝一個轉換器來處理這些物品,我得到的是我不知道如何解決的錯誤(見下文):numpy的genfromtxt日期轉換錯誤
strptime() argument 0 must be str, not <class 'bytes'>
在這一點上,我的目標是找到一種簡單的方法使用genfromtxt加載文件(),並從日期格式中選擇列轉換爲一個整數(紀元,例如) - 但是,我正在尋找任何可行的方法(不一定是我所說明的方法)。
任何幫助表示讚賞。
(詳情如下)
- 運行中的virtualenv
- 使用MacOS的
- 使用Python V3.5
文件(略)是一個簡單的CSV格式:
SomeField,SomeDate
1,2013-08-16
代碼:
import numpy as np
import time
def main():
pathRaw = 'data/homesite-quote-conversion/temp.csv'
str2epoch = lambda x: time.mktime(time.strptime(x, '%Y-%m-%d'))
converters = {1:str2epoch}
dataset = np.genfromtxt(open(pathRaw,'rb'), converters=converters, dtype=None, delimiter=',', skip_header=1)
return
if __name__ == '__main__':
main()
錯誤:
Traceback (most recent call last):
File "test.py", line 12, in <module>
main()
File "test.py", line 8, in main
dataset = np.genfromtxt(open(pathRaw,'rb'), converters=converters, dtype=None, delimiter=',', skip_header=1)
File "{user-directory}/.virtualenvs/demo/lib/python3.5/site-packages/numpy/lib/npyio.py", line 1731, in genfromtxt
converter.iterupgrade(current_column)
File "{user-directory}/.virtualenvs/demo/lib/python3.5/site-packages/numpy/lib/_iotools.py", line 766, in iterupgrade
_ strict_call(_m)
File "/{user-directory}/.virtualenvs/demo/lib/python3.5/site-packages/numpy/lib/_iotools.py", line 688, in _strict_call
new_value = self.func(value)
File "test.py", line 6, in <lambda>
str2epoch = lambda x: time.mktime(time.strptime(x, '%Y-%m-%d'))
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/_strptime.py", line 494, in _strptime_time
tt = _strptime(data_string, format)[0]
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/_strptime.py", line 306, in _strptime
raise TypeError(msg.format(index, type(arg)))
TypeError: strptime() argument 0 must be str, not <class 'bytes'>
這工作完美!謝謝。 –