我有一个长度为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'
的错误。有什么想法吗?我错过了什么?
答案 0 :(得分:1)
错误消息告诉您digits
列的类型为float
,您需要将其更改为int
。
此外,lambda x: "{:006d}".format(x)
只是"{:006d}".format
:
df['digits'] = df[df['indicator'] == 'red']['digits'].astype(int).apply("{:006d}".format)