【问题标题】:Setting CSV field type as string, but still numeric when opening CSV?将 CSV 字段类型设置为字符串,但打开 CSV 时仍为数字?
【发布时间】:2021-12-05 18:49:42
【问题描述】:

我正在尝试使用 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 文件中看到一些示例数据,就像您在文本编辑器中打开它一样?
  • 你可以试试df = df.apply(str)
  • 请给我们一些我们可以使用的东西。与其读取 CSV,不如只用几列和几行初始化一个数据框?或者,发布一个小样本 CSV 并删除 output_files_dir + "//" + output_shp_name + ".csv" 以支持说“test.csv”。
  • 问题可能是您首先将“str”应用于列。原生数据类型有哪些?
  • 为什么发布一个问题然后就黑了?

标签: python pandas string arcpy


【解决方案1】:

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

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2013-11-12
  • 2013-06-04
  • 1970-01-01
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多