Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将0添加到带有5个字符的数字(熊猫)_Python_Pandas - Fatal编程技术网

Python 将0添加到带有5个字符的数字(熊猫)

Python 将0添加到带有5个字符的数字(熊猫),python,pandas,Python,Pandas,我有一个数据框,其中的列包含: DATA 123456 12345 12345 123456 我想将此更改为: DATA 123456 012345 012345 123456 因此,如果一个单元格中有5个字符,则在数字前面添加一个0。最简单的方法是什么?不能将数据类型保持为整数,因为不能在整数中表示前导0,因此必须将数据类型转换为str,然后调用向量化方法: 如果数据列的数据类型为str,则可以使用方法。范例- df['DATA'] = df['DATA'].str.rjust(6,'

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

 DATA
123456
12345
12345
123456
我想将此更改为:

 DATA
123456
012345
012345
123456

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

不能将数据类型保持为整数,因为不能在整数中表示前导0,因此必须将数据类型转换为str,然后调用向量化方法:

如果数据列的数据类型为str,则可以使用方法。范例-

df['DATA'] = df['DATA'].str.rjust(6,'0')
如果数据类型是int或numeric,则需要使用-

演示-

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
您可以使用该函数填充零:

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

数据类型是数值型还是str?它们已经是字符串了吗?您希望最终结果是字符串,对吗?这不起作用,您不能用前导0表示整数,它必须转换为字符串,所以我这样做:dfactual['DATA']。astypestrw这是一个很棒的快速帮助!!谢谢大家!!虽然这个答案是正确的,但我们应该积极劝阻在存在向量化解决方案的情况下使用apply,当然,如果pandas的版本太旧,以至于.str方法不存在,那么这将是一个有效的答案
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
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