我有一个包含 500 万行的数据框。假设数据框如下所示:
>>> df = pd.DataFrame(data={"Random": "86 7639103627 96 32 1469476501".split()})
>>> df
Random
0 86
1 7639103627
2 96
3 32
4 1469476501
请注意,Random
列存储为字符串。
如果 Random 列中的数字少于 9 位,我想添加前导零以使其成为 9 位。如果数字有 9 位或更多位,我想添加前导零以使其成为 20 位。
我所做的是这样的:
for i in range(0,len(df['Random'])):
if len(df['Random'][i]) < 9:
df['Random'][i]=df['Random'][i].zfill(9)
else:
df['Random'][i]=df['Random'][i].zfill(20)
由于行数超过 500 万,这个过程需要很多时间! (性能为 5it/秒。使用 tqdm 进行测试,预计完成时间以天为单位!)。
有没有更简单、更快的方法来执行此任务?
让我们做np.where
结合zfill
,您可以检查替代方案str.pad
df.Random=np.where(df.Random.str.len()<9,df.Random.str.zfill(9),df.Random.str.zfill(20))
df
Out[9]:
Random
0 000000086
1 00000000007639103627
2 000000096
3 000000032
4 00000000001469476501
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)