python - 将 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.
我能做些什么来确保它正确输出吗?
解决方案
如果您有一行,每列都有一个实际的字符串,理想情况下是第一条记录,那么所有后续数据都将被解释为字符串。但是,这会创建一个需要考虑进行实际分析的记录,因为这些字段具有不相关的数据。有一个字符串将强制进行这种解释。问题是数据类型不会在 CSV 中定义,无论何时/无论何时读取文件,都需要解释这些字段。Pandas 在将 FIPS 字段确定为对象(字符串)方面做得很好,但相同的 CSV 将在 excel 或 Arc 软件中加载为不带前导零的整数。每个都因数据的内部软件解释而异。另请参阅:将数据框保存在 csv 文件中后尝试保持相同的类型
推荐阅读
- collapse - Bootstrap 4 - 移动视图上的 3 列折叠
- jhipster - 如何使用 jhipster-jdl 创建多个枚举?
- cryptojs - CryptoJS 奇怪的加密/解密失败
- progressive-web-apps - iOS 上奇怪的 PWA/Manifest 行为
- xamarin.ios - xamarin 表单 ios 缺少所需的图标文件 167x167
- python - Python 3.6 中的 DNA 到 RNA 转录代码未通过“ACGTXXXCTTAA”测试
- c# - 来自设置文件的 Azure 消费者组
- sql - 解析包含整数的列
- c++ - 无法从大括号括起来的初始值设定项列表转换为标准元组
- jenkins - 詹金斯。更改文件中的版本并提交