熊猫 - 添加领先" 0"字符串值,所有值都相等len

时间:2015-10-20 18:07:33

标签: python string pandas

我有一个专栏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']

建议?

3 个答案:

答案 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