我有一个专栏code_x
。我把它转换为.astype(str)
。一些示例值为45362.0, 75345.0, 346157.0, 572575.0
。我希望他们都是6位数。又名:045362, 075345, 346157, 572575
我正在尝试以下操作,但它不起作用:
f3[df3['code_x'].str.len() == 7] = "0" + df3[df3['code_x'].str.len() == 7]['code_x']
建议?
答案 0 :(得分:4)
即使我和@DSM一起使用zfill也是如此。但我认为使用lamba可以使它更清晰,更易于阅读。
gradleApi()
注意:我们在转换为字符串之前将给定值转换为int,以便在结果中删除“.0”。
答案 1 :(得分:3)
您可以使用Series.str.rjust
方法右对齐字符串值,并使用8
作为填充值,0
作为填充值。示例 -
df3['code_x'] = df3['code_x'].astype(str).str.rjust(8,'0')
演示 -
In [65]: df
Out[65]:
A
0 blah
1 supbla
2 a
In [69]: df['A'].str.rjust(6,'0')
Out[69]:
0 00blah
1 supbla
2 00000a
Name: A, dtype: object
答案 2 :(得分:2)
IIUC,您可以使用str.zfill
,这意味着您不必长篇特殊情况:
In [16]: ser
Out[16]:
0 45362
1 75345
2 346157
3 572575
dtype: float64
In [17]: ser.astype(str).str.zfill(8)
Out[17]:
0 045362.0
1 075345.0
2 346157.0
3 572575.0
dtype: object