【发布时间】:2016-03-15 08:41:50
【问题描述】:
我有记录,其中字段(称为 INDATUMA 和 UTDATUMA)应该包含 20010101 和 20141231 范围内的数字(原因很明显)。为了允许缺失值但保持精确到最近的日期,我会将它们存储为浮点数(np.float64)。我希望这会迫使偶尔格式错误的字段(想想 2oo41oo9)到NAs,而是在 pandas 0.18.0 或 IOPro 1.7.2 中破坏导入。
是否有未记录的选项可以使用?不然呢?
pandas 尝试的关键是
import numpy as np
import pandas as pd
treatments = pd.read_table(filename,usecols=[0,3,4,6], engine='c', dtype={'LopNr':np.uint32,'INDATUMA':np.float64,'UTDATUMA':np.float64,'DIAGNOS':object})
带有错误ValueError: invalid literal for float(): 2003o730。
我在 IOPro 中尝试了以下操作,以防万一:
import iopro
adapter = iopro.text_adapter(filename, parser='csv',delimiter='\t',output='dataframe',infer_types=False)
adapter.set_field_types({0: 'u4',3:'f8', 4:'f8',6:'object'})
all_treatments.append(adapter[[0,3,4,6]][:])
但这也与iopro.lib.errors.DataTypeError: Could not convert token "2003o730" at record 1 field 3 to float64.Reason: unknown 中断了
数据文件开头为
LopNr SJUKHUS MVO INDATUMA UTDATUMA HDIA DIAGNOS OP PVARD EKOD1 EKOD2 EKOD3 EKOD4 EKOD5 ICD
1562 21001 046 20030707 20030711 I489A I489A I509 2 10
1562 21001 046 2003o730 20030801 I501 I501 I489A DG001 2 10
【问题讨论】:
标签: python numpy pandas casting iopro