如何在Python的Pandas DataFrame中为code列补前导零至5位
解决Pandas DataFrame中code列补前导零的问题
先还原你的原始数据:
import pandas as pd df = pd.DataFrame({ 'ID': [0, 1, 2, 3, 4, 5], 'code': [14563, 4563, 1463, 82930, 903, 18392], 'color': ['red', 'blue', 'green', 'red', 'green', 'red'] })
要实现code列值为4位及以下时,左侧补前导零至5位的需求,直接用Pandas的字符串方法就能搞定,步骤如下:
# 先将code列转为字符串类型,再执行补零操作 df['code'] = df['code'].astype(str).str.zfill(5)
代码说明
astype(str):把数值类型的code列转成字符串,因为数值无法存储前导零,必须转成字符串才能保留补的零str.zfill(5):自动给每个字符串左侧补零,直到长度达到5位;如果原字符串长度已经≥5,就保持原样
处理后的DataFrame如下:
| ID | code | color |
|---|---|---|
| 0 | 14563 | red |
| 1 | 04563 | blue |
| 2 | 01463 | green |
| 3 | 82930 | red |
| 4 | 00903 | green |
| 5 | 18392 | red |
如果非要保持code列为数值类型(但前导零会丢失,仅适合展示场景),可以用格式化输出:
# 仅用于展示,实际存储还是数值,前导零不会保留 df['code_display'] = df['code'].apply(lambda x: f"{x:05d}")
内容的提问来源于stack exchange,提问作者Carola
相关产品推荐
相关产品推荐

