我有一个数据框架,其中包含:
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