在pandas系列

时间:2018-01-31 11:12:59

标签: python pandas

我是python的初学者。我在我的Windows 7中使用python 3.X 我有一个熊猫系列。目前它包含1544252个8位数字的int64类型的记录。最后几条记录的样本如下:

1544241    87526878
1544242    92480921
1544243    61479211
1544244    57572826
1544245    25527504
1544246    69477558
1544247    35477532
1544248    12475315
1544249    75480854
1544250    68527476
1544251    87480808

我需要在我的系列中添加前导零,以使8位数到10个字符长的字符串。这是我想要的输出。

    1544241    0087526878
    1544242    0092480921
    1544243    0061479211
    1544244    0057572826
    1544245    0025527504
    1544246    0069477558
    1544247    0035477532
    1544248    0012475315
    1544249    0075480854
    1544250    0068527476
    1544251    0087480808

请您以时间有效的方式建议我如何做到这一点?

提前致谢

6 个答案:

答案 0 :(得分:1)

如果你的系列被称为s

'00'+s.astype(str)

作品。

答案 1 :(得分:0)

这样的东西?

df['tendigits'] = df['eightdigits'].apply(lambda n: '00' + str(n))

答案 2 :(得分:0)

s = pd.Series(map(lambda x: '%010d' %x, s))

s是你的系列。

答案 3 :(得分:0)

你可以使用左边的zfill函数填充前导零,并将所需输出作为参数。

如果s是你的系列,你可以这样做:

s.apply(lambda x : x.zfill(10))

答案 4 :(得分:0)

这是一种矢量化方式:

import pandas as pd

df = pd.DataFrame([[1544241, 87526878],
                   [1544242, 92480921]],
                  columns=['A', 'B'])

df.B = df.B.astype(str).str.zfill(10)

#          A           B
# 0  1544241  0087526878
# 1  1544242  0092480921

答案 5 :(得分:0)

builtin function for padding in pandas

并且您必须在之前转换为字符串:

s.astype(str).str.pad(width=10, side='left', fillchar='0')

我测试了它并且有效。