如何在 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)
我有一列的值长度为 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)