如何在 pandas 中的同一列中的不同值中添加前导 0?

How to add leading 0's to different values in same column in pandas?

我有一列的值长度为 5、6、8 或 9。该列的值应该只有 6 或 9。如果值的长度为 5 或 8,我需要添加前导 0 .

还有另一列可以确定该值是否应为 6 位或 9 位数字(指示符)。指标值'Red'表示6位,指标'Green'表示9位。

df['digits'] = df[df['indicator'] == 'red']['digits'].apply(lambda x: "{:006d}".format(x))
df['digits'] = df[df['indicator'] == 'green']['digits'].apply(lambda x: "{:009d}".format(x))


id    indicator     digits
0     red           54324
1     red           654345
2     green         533345678
3     green         56438594

预期结果:

id    indicator     digits
0     red           054324  # 0 added to this value
1     red           654345
2     green         533345678
3     green         056438594 # 0 added to this value

我收到 ValueError: Unknown format code 'd' for object of type 'float' 错误。任何想法为什么?我错过了什么?

错误消息告诉您 digits 列的类型是 float,您需要将其更改为 int

此外,lambda x: "{:006d}".format(x) 只是 "{:006d}".format:

df['digits'] = df[df['indicator'] == 'red']['digits'].astype(int).apply("{:006d}".format)