使用Pandas处理含科学计数法列的CSV:转换为字符串格式并重新导出
解决方案:用Pandas将科学计数法列转为字符串格式的完整数值
当然可以实现这个需求!按照你说的思路,用Pandas读取CSV后处理再重新写入是最直接的方法,具体步骤如下:
步骤1:读取CSV文件
读取时这些科学计数法的数值会被Pandas识别为float64类型,直接读取即可:
import pandas as pd # 替换为你的CSV文件路径 df = pd.read_csv("your_file.csv")
步骤2:将科学计数法列转为字符串格式
接下来把FIPS_BLOCK、FIPS_BLKGR、FIPS_TRACT这几列转换成不带科学计数法的字符串,这里有两种可靠的处理方式:
方法一:转整数再转字符串(适配纯整数场景)
因为你的FIPS编码本质是整数,先把浮点数转为整数可以去掉多余的小数点,再转成字符串:
# 定义需要处理的目标列 target_cols = ["FIPS_BLOCK", "FIPS_BLKGR", "FIPS_TRACT"] # 批量转换:先转整数消除小数,再转字符串 df[target_cols] = df[target_cols].applymap(lambda x: str(int(x)))
方法二:格式化字符串(兼容带小数的通用场景)
如果后续遇到带小数的科学计数法数值,也可以用格式化语法直接生成完整的非科学计数法字符串,针对你的整数需求设置保留0位小数即可:
df[target_cols] = df[target_cols].applymap(lambda x: "{:.0f}".format(x))
步骤3:重新写入CSV覆盖原文件
最后将处理好的DataFrame写入原文件,记得设置index=False避免生成额外的索引列:
# 写入CSV并覆盖原文件 df.to_csv("your_file.csv", index=False)
最终效果
处理后你的CSV内容会变成这样:
FIPS_BLOCK,FIPS_BLKGR,FIPS_TRACT 551000000000000,551000000000,55100000000 551000000000000,551000000000,55100000000 551000000000000,551000000000,55100000000 551000000000000,551000000000,55100000000
这些列现在都是字符串类型的完整数值,不会再以科学计数法显示了。
内容的提问来源于stack exchange,提问作者DiamondJoe12
相关产品推荐
相关产品推荐

