Python 熊猫读取\u csv声明数据类型转换列不正确
当我使用pandas读取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
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。非常感谢!我试过所有这些,但不幸的是这对我不起作用。。。这真是太糟糕了