使用Pandas导出CSV时保留前导零的问题求助
解决Pandas导出CSV时前导零丢失的问题
当你用df.to_csv()导出CSV时,带前导零的数值型数据(如012546320)丢失前导零,是因为Pandas默认会将数值类型按数值格式存储导出,而float_format='str'仅对浮点数生效,对整数或其他数值类型不起作用。以下是几种有效解决方案:
方法1:将整个DataFrame转为字符串后导出
直接把所有列转换成字符串类型,确保所有值(包括带前导零的数值)以原始格式导出:
df.astype(str).to_csv('output.csv', index=False)
如果DataFrame里存在NaN值,转换后会变成字符串'NaN',若需保留空值可先处理:
df.fillna('').astype(str).to_csv('output.csv', index=False)
方法2:仅转换需要保留前导零的列
如果只有部分列需要保留前导零,单独转换这些列更高效:
# 假设需要处理的列是'code'和'number' cols_to_preserve = ['code', 'number'] df[cols_to_preserve] = df[cols_to_preserve].astype(str) df.to_csv('output.csv', index=False)
方法3:读取数据时就指定列类型为字符串
如果是从CSV读取数据时就丢失了前导零,在读取阶段指定对应列的类型为字符串,从根源避免问题:
df = pd.read_csv('input.csv', dtype={'code': str, 'number': str}) # 后续直接导出即可保留前导零 df.to_csv('output.csv', index=False)
内容的提问来源于stack exchange,提问作者hamdy emad
相关产品推荐
相关产品推荐

