gpt4 book ai didi

python - Pandas read_csv 声明 dtype convets 列不正确

转载 作者:行者123 更新时间:2023-12-04 13:37:11 24 4
gpt4 key购买 nike

当我使用 Pandas 读取 csv 文件时,我设置了 dtype通过使用字典( dict_types )来节省内存:

dict_types = {
"Id": "object",
"COD_OPE": "object",
"NUM_OPE": "float32",
"STR_ANA": "category",
"COD_EXO": "category",
"NUM_CPT": "object",
"MTT_DEV": "float32",
"SEN_MTT": "category",
}
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",
dtype=dict_types,
usecols=columns,
error_bad_lines=False,
chunksize=1000000,
parse_dates=["DTE_OPE", "DTE_CPT", "DTE_VAL", "DTE_TRT"],
infer_datetime_format=True,
)

但是,当加载文件时,我会查看 df.info()df.dtypes ,它告诉我 STR_ANA 的类型是 object虽然我希望它应该是 category .
而“COD_EXO”“SEN_MTT”确实是类型 category
为什么?

也许是因为我使用 chunk 的方式?
实际上我这样做是为了读取数据帧
chunk_list=[] 
for chunk in df_chunk:
chunk_list.append(chunk)
df=pd.concat(chunk_list,ignore_index=True)

最佳答案

可以使用 pd.concat() 但最好添加 ignore_index=True避免索引重复。

df = pd.concat(df_chunk, ignore_index=True)
您已为参数 parse_dates 填写了 4 列不存在于 columns .
确保 csv 文件中的列名称与 dtypes 的名称相同。和 usecols你正在分配。可以肯定的是,使用参数 header=N确保 Pandas 使用 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 .

关于python - Pandas read_csv 声明 dtype convets 列不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61188835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com