我有一个pandas数据框架,其中前3列是字符串:
ID text1 text 2
0 2345656 blah blah
1 3456 blah blah
2 541304 blah blah
3 201306 hi blah
4 12313201308 hello blah
我想在ID中添加前导零:
ID text1 text 2
0 000000002345656 blah blah
1 000000000003456 blah blah
2 000000000541304 blah blah
3 000000000201306 hi blah
4 000012313201308 hello blah
我试过:
df['ID'] = df.ID.zfill(15)
df['ID'] = '{0:0>15}'.format(df['ID'])
8条答案
按热度按时间wtzytmuj1#
str
属性包含字符串中的大多数方法。查看更多:http://pandas.pydata.org/pandas-docs/stable/text.html
n1bvdmb62#
尝试:
甚至
n6lpvg4x3#
在Python 3.6+中,你也可以使用f-strings:
性能与
df['ID'].map('{:0>15}'.format)
相当或略差。另一方面,f字符串允许更复杂的输出,您可以通过列表解析更有效地使用它们。性能对标
z2acfund4#
它可以在初始化时用一条线实现。使用converters参数。
这样你就可以将代码长度减少一半:)
PS:read_csv也有这个说法。
pxy2qtax5#
如果您遇到错误:
Pandas错误:只能对字符串值使用. str访问器,在pandas中使用np.object_dtype
sbdsn5lh6#
如果您想要一个更可定制的解决方案来解决这个问题,您可以尝试
pandas.Series.str.pad
str.zfill(n)
是一种特殊情况,等价于str.pad(n, side='left', fillchar='0')
yc0p9oo07#
rjust为我工作:
cotxawn78#
在pandas中的数值列中添加前导零:
在pandas中的字符列添加前导零:
方法1:使用Zfill
方法二:使用rjust()函数
来源:https://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/