加0到5个字符的数字(熊猫)



我有一个数据框架,其中包含:

 DATA
123456
12345
12345
123456

我想把它改成:

 DATA
123456
012345
012345
123456

所以如果一个单元格中有5个字符,那么在数字的前面加一个0。最简单的方法是什么?

你不能保持dtype为整型,因为你不能在整型中表示前导0,所以你必须将dtype转换为str,然后调用矢量化的str.pad方法:

In [11]:
df['data'] = df['data'].astype(str)
df['data'] = df['data'].str.pad(6, 'left', '0')
df
Out[11]:
     data
0  123456
1  012345
2  012345
3  123456

如果DATA列的dtype为str。您可以使用Series.str.rjust()方法。例子——

df['DATA'] = df['DATA'].str.rjust(6,'0')

如果dtype是int或数字,你需要将它们转换为字符串,使用Series.astype() -

df['DATA'] = df['DATA'].astype(str)
df['DATA'] = df['DATA'].str.rjust(6,'0')
——

演示

In [33]: df['DATA']
Out[33]:
0    123456
1     12345
2     12345
3    123456
Name: DATA, dtype: object
In [34]: df['DATA'].str.rjust(6,'0')
Out[34]:
0    123456
1    012345
2    012345
3    123456
Name: DATA, dtype: object

您可以使用zfill函数填充零:

df = pd.DataFrame({'data': [123456, 12345, 12345, 123456, 123, 1]})
df['data'] = df.data.astype(str).str.zfill(6)
>>> df.data
0    123456
1    012345
2    012345
3    123456
4    000123
5    000001

最新更新