是否将csv字段类型设置为字符串,但在打开csv时仍为数字?

2024-06-12 01:44:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用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.我可以做些什么来确保它正确输出

谢谢


Tags: ofcsvtooutputplace数字blockdict
1条回答
网友
1楼 · 发布于 2024-06-12 01:44:23

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

相关问题 更多 >