如何在熊猫数据框中生成Alpha数值固定长度列

时间:2019-07-02 09:53:46

标签: python pandas

我正在尝试根据一个现有列(“ Number”)创建具有固定长度的字母数字(增量值)列。

我有一个下面的数据框:

Number Space Student
    1      MG    A
    2      FE    B
    3      GD    C
    4      MK    D
    5      OK    E
    6      OO    F
    7      PP    G
    8      QW    H
    9      WE    I
    10     ZA    J
    11     ZQ    K
    ...
    100    ZU    X
    101    ZX    Y
    102    ZB    Z

我需要以下输出(预期输出):

Number Space Student NUM4
    1      MG    A   P001
    2      FE    B   P002   
    3      GD    C   P003
    4      MK    D   P004
    5      OK    E   P005
    6      OO    F   P006
    7      PP    G   P007
    8      QW    H   P008
    9      WE    I   P009
    10     ZA    J   P010
    11     ZQ    K   P011
    ...
    100    ZU    X   P100
    101    ZX    Y   P101
    102    ZB    Z   P102

在上面的输出中,我想基于“ Number”列生成New列(NUM4),但是新列的长度必须为4(新列中的字母保持不变)

df['NUM4'] = 'P00' + df['Number']

我不确定如何引入固定长度的列,该长度根据“ Number”列的长度而动态变化。您能帮上忙吗?

谢谢。

3 个答案:

答案 0 :(得分:3)

str.zfill用作:

df['NUM4'] = 'P'+df['Number'].astype(str).str.zfill(3)

print(df)
    Number Space Student  NUM4
0        1    MG       A  P001
1        2    FE       B  P002
2        3    GD       C  P003
3        4    MK       D  P004
4        5    OK       E  P005
5        6    OO       F  P006
6        7    PP       G  P007
7        8    QW       H  P008
8        9    WE       I  P009
9       10    ZA       J  P010
10      11    ZQ       K  P011

答案 1 :(得分:0)

熊猫这样做的方法:

df['NUM4'] = df.apply(lambda x: f'P{x.Number:03}', axis=1)

答案 2 :(得分:0)

我能想到的最简单的方法是使用f字符串:

df['NUM4'] = df.Number.apply(lambda x: f'P{x:03}')

enter image description here