首页 > 解决方案 > 将 CSV 字段类型设置为字符串,但打开 CSV 时仍为数字?

问题描述

我正在尝试使用 pandas 来确保 CSV 文件将某些字段(包含数字)输出为字符串,而不是数字:

# lst of column names which needs to be string
lst_str_cols = ['FIPS_BLOCK', 'FIPS_BLKGR', 'FIPS_TRACT','FIPS_PLACE']
# use dictionary comprehension to make dict of dtypes
dict_dtypes = {x : 'str'  for x in lst_str_cols}
# use dict on dtypes
df = pd.read_csv(output_files_dir + "//" + output_shp_name + ".csv", dtype=dict_dtypes)
df.to_csv(output_files_dir + "//" + output_shp_name + ".csv")

虽然代码运行良好且没有错误,但 CSV 仍然具有FIPS_BLOCK, FIPS_BLKGR, FIPS_TRACT, and FIPS_PLACE数字 - 即,5.50791E+14.我能做些什么来确保它正确输出吗?

标签: pythonpandasstringarcpy

解决方案


如果您有一行,每列都有一个实际的字符串,理想情况下是第一条记录,那么所有后续数据都将被解释为字符串。但是,这会创建一个需要考虑进行实际分析的记录,因为这些字段具有不相关的数据。有一个字符串将强制进行这种解释。问题是数据类型不会在 CSV 中定义,无论何时/无论何时读取文件,都需要解释这些字段。Pandas 在将 FIPS 字段确定为对象(字符串)方面做得很好,但相同的 CSV 将在 excel 或 Arc 软件中加载为不带前导零的整数。每个都因数据的内部软件解释而异。另请参阅:将数据框保存在 csv 文件中后尝试保持相同的类型


推荐阅读