Python 熊猫读取\u csv声明数据类型转换列不正确

Python 熊猫读取\u csv声明数据类型转换列不正确,python,pandas,data-science,Python,Pandas,Data Science,当我使用pandas读取csv文件时,为了节省内存,我使用字典(dict_types)设置dtype: dict\u类型={ “Id”:“对象”, “COD_OPE”:“object”, “NUM_OPE”:“float32”, “STR_ANA”:“类别”, “化学需氧量”:“类别”, “NUM_CPT”:“对象”, “MTT_-DEV”:“浮动32”, “SEN_MTT”:“类别”, } 列=[ “身份证”, “鳕鱼”, “NUM_OPE”, “STR_ANA”, “鳕鱼”, “NUM_CP

当我使用pandas读取csv文件时,为了节省内存,我使用字典(
dict_types
)设置
dtype

dict\u类型={
“Id”:“对象”,
“COD_OPE”:“object”,
“NUM_OPE”:“float32”,
“STR_ANA”:“类别”,
“化学需氧量”:“类别”,
“NUM_CPT”:“对象”,
“MTT_-DEV”:“浮动32”,
“SEN_MTT”:“类别”,
}
列=[
“身份证”,
“鳕鱼”,
“NUM_OPE”,
“STR_ANA”,
“鳕鱼”,
“NUM_CPT”,
“MTT_DEV”,
“SEN_MTT”,
“DTE_OPE”,
“DTE_CPT”,
“DTE_VAL”,
“DTE_TRT”
]
df_chunk=pd.read_csv(
“./SIDP_Operations/SAB_OPE_02_2020/SAB_OPE_02_2020.rpt”,
sep=“\t”,
dtype=dict_类型,
usecols=列,
错误\u错误\u行=错误,
chunksize=1000000,
解析日期=[“DTE_OPE”、“DTE_CPT”、“DTE_VAL”、“DTE_TRT”],
推断日期时间格式=真,
)
但是,当加载文件时,我查看
df.info()
df.dtypes
,它告诉我
stru ANA
的类型是
object
,而我希望它应该是
category
。 “化学需氧量”和“化学需氧量”实际上是类型
category

为什么?

也许是因为我使用chunk的方式? 实际上,我这样做是为了读取数据帧

chunk_list=[] 
for chunk in df_chunk: 
    chunk_list.append(chunk) 
df=pd.concat(chunk_list,ignore_index=True)
可以使用pd.concat(),但最好添加
ignore\u index=True
以避免索引的重复性

df = pd.concat(df_chunk, ignore_index=True)
您已经为参数
parse_dates
填写了4列,这些参数在
列中不存在

确保csv文件中的列名与正在分配的
dtypes
usecols
的名称相同。可以肯定的是,使用参数
header=N
来确保使用csv的N行作为标题

试试这个:

# add 4 columns with date
columns = [
    "Id",
    "COD_OPE",
    "NUM_OPE",
    "STR_ANA",
    "COD_EXO",
    "NUM_CPT",
    "MTT_DEV",
    "SEN_MTT",
    "DTE_OPE", "DTE_CPT", "DTE_VAL", "DTE_TRT"
]
df_chunk = pd.read_csv(
    "../SIDP_Operations/SAB_OPE_02_2020/SAB_OPE_02_2020.rpt",
    sep="\t",
    header=0,
    usecols=columns,
    dtype=dict_types,
    parse_dates=["DTE_OPE", "DTE_CPT", "DTE_VAL", "DTE_TRT"],
    infer_datetime_format=True,
    chunksize=1000000,
    error_bad_lines=False,
    low_memory=False
)

如果它仍然不工作,请尝试删除
low_memory=False

您是否尝试使用
df_chunk['STR_ANA']=df_chunk['STR_ANA'].astype('category')
导入数据后手动将其转换为
df_chunk.dtypes()
?是的,请使用
df_chunk['STR_ANA']=df_chunk['STR ANA'].astype('category')。astype('category'))
可以,但我在开始读取数据时要做的是节省内存,因为我的计算机很难读取所有数据,
df_chunk.dtypes()
对于colonne'STR_ANA'和其他应该属于类别的colonne来说也是对象……您好,实际上我做了
chunk_list=[]
对于df\u chunk中的chunk:chunk\u list.append(chunk)
df=pd.concat(chunk\u list)
,这与get\u chunk()有什么区别吗?请尝试解决方案v2。非常感谢!我试过所有这些,但不幸的是这对我不起作用。。。这真是太糟糕了