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

时间:2018-06-02 16:17:39

标签: python pandas pandas-apply

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

如果值应为6或9位(指示符),则可以识别另一列。指标值为“红色”'表示6位数字,以及“绿色”指示符。表示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'的错误。有什么想法吗?我错过了什么?

1 个答案:

答案 0 :(得分:1)

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

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

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