Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 972
splinter Avatar asked Jan 19 '17 19:01

splinter


People also ask

How do I convert a numeric column to a string in Python?

Use pandas DataFrame. astype() function to convert a column from int to string, you can apply this on a specific column or on an entire DataFrame. The Below example converts Fee column from int to string dtype.

How do you convert items to STR in pandas?

Convert a Pandas Dataframe Column Values to String using mapastype() Pandas series method, you can use the . map() method to convert a Pandas column to strings.


2 Answers

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
like image 91
MaxU - stop WAR against UA Avatar answered Oct 07 '22 19:10

MaxU - stop WAR against UA


You can also do this using the Series.apply() method and an f-string wrapped in a lambda function:

In [1]: import pandas as pd


In [2]: df = pd.DataFrame({'a':[1,2], 'b':[3,234]})

In [3]: df
Out[3]:
   a    b
0  1    3
1  2  234

In [4]: df['b'] = df['b'].apply(lambda x: f"{x:04d}")

In [5]: df
Out[5]:
   a     b
0  1  0003
1  2  0234

In the f-string, the part after the colon says "zero-pad the field with four characters and make it a signed base-10 integer".

like image 25
craigim Avatar answered Oct 07 '22 21:10

craigim