You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python/Pandas将DataFrame写入CSV时保留手机号格式避免科学计数法

解决方案

核心原因是电话号码作为长整数被pandas默认识别为数值类型,超过长度阈值就会自动转为科学计数法,电话号码属于标识类数据,全程用字符串类型存储即可解决问题,分写入、读取两个环节处理:

写入环节操作

  1. 写入前先将phone列强制转换为字符串类型,若原列为数值类型,可先格式化去掉小数后缀,避免出现12022668000.0这类异常格式:
# 转换phone列为字符串格式,保留原始号码
df['phone'] = df['phone'].apply(lambda x: f"{x:.0f}" if pd.notna(x) else x).astype(str)
  1. 原有to_csv逻辑无需额外修改,直接写入即可:
df.to_csv(r'yelp_data.csv', index = False, header=True)

读取环节操作

读取时通过dtype参数指定phone列按字符串类型解析,避免pandas自动识别为数值类型:

pd.read_csv('yelp_data.csv', dtype={'phone': str})

额外说明

如果需要用Excel打开生成的CSV不显示科学计数法,可以在写入时给手机号前加不可见的制表符\t,修改转换逻辑即可:

df['phone'] = df['phone'].apply(lambda x: f"\t{x:.0f}" if pd.notna(x) else x).astype(str)

这个方法不影响pandas读取后的号码匹配判断,也能兼容Excel的显示。

内容的提问来源于stack exchange,提问作者WallyWorld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:36:04