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

为Pandas DataFrame含NumPy数组的列补前导零

解决Pandas中列表元素的前导零填充问题

嘿,我明白你遇到的麻烦了——之前的代码之所以失效,是因为你误把整个列表当成单个字符串处理了,而没有遍历列表里的每个数字元素。咱们来一步步修正这个问题:

问题根源分析

你之前的代码:

df['A'] = df['A'].astype(str)
df['A'] = df['A'].apply(lambda x: x.zfill(10))

这里的astype(str)会把每一行的整个列表转换成一个字符串(比如变成"[11234466, 77777777, 12345678, 23452345]"),之后的zfill(10)只是给这个长字符串的头部补零,根本没触及列表里的单个数字,所以才会出现奇怪的输出。

正确的解决方案

我们需要针对每个列表里的单个数字进行格式化,用apply遍历每一行的列表,再用列表推导式处理每个元素:

方法1:使用f-string格式化(推荐)

df['A'] = df['A'].apply(lambda lst: [f"{num:010d}" for num in lst])

这里的f"{num:010d}"会把每个整数格式化为10位长度,不足的地方自动补前导零。

方法2:使用str.zfill()

如果你更喜欢用zfill,也可以先把数字转成字符串再补零:

df['A'] = df['A'].apply(lambda lst: [str(num).zfill(10) for num in lst])

验证效果

运行上述代码后,你的DataFrame会变成预期的样子:

A
0  [0011234466, 0077777777, 0012345678, 0023452345]
1  [0099999999, 0066666666, 0044332211, 0056781234]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:33:13