Search code examples
pythonpython-3.xpandasdataframestring-formatting

Converting numbers to particular string format in a pandas DataFrame


I need to run a task which can be done with a loop, but I imagine that there is a more efficient and pretty way to do this. I have a DataFrame which has an integer column, which I would like to transform to a 4-digit string representation. That is, 3 should be converted to '0003', 234 should be converted to '0234'. I am looking for a vector operation that will do this to all entries in the column at once, quickly with simple code.


Solution

  • you can use Series.str.zfill() method:

    df['column_name'] = df['column_name'].astype(str).str.zfill(4)
    

    Demo:

    In [29]: df = pd.DataFrame({'a':[1,2], 'b':[3,234]})
    
    In [30]: df
    Out[30]:
       a    b
    0  1    3
    1  2  234
    
    In [31]: df['b'] = df['b'].astype(str).str.zfill(4)
    
    In [32]: df
    Out[32]:
       a     b
    0  1  0003
    1  2  0234