Search code examples
pythonpandasdataframescientific-notation

Suppress Scientific Format in a Dataframe Column


I have a column called accountnumber with values similar to 4.11889000e+11 in a pandas dataframe. I want to suppress the scientific notation and convert the values to 4118890000. I have tried the following method and did not work.

df = pd.read_csv(data.csv)
pd.options.display.float_format = '{:,.3f}'.format

Please recommend.


Solution

  • I assume the exponential notation for the account numbers must come from the data file. If I create a small csv with the full account numbers, pandas will interpret them as integers.

         acct_num
    0  4118890000
    1  9876543210
    
    df['acct_num'].dtype
    Out[51]: dtype('int64')
    

    However, if the account numbers in the csv are represented in exponential notation then pandas will read them as floats.

           acct_num
    0  4.118890e+11
    1  9.876543e+11
    
    df['acct_num'].dtype
    Out[54]: dtype('float64')
    

    You have 2 options. First, correct the process that creates the csv so the account numbers are written out correctly. The second is to change the data type of the acct_num column to integer.

    df['acct_num'] = df['acct_num'].astype('int64')
    
    df
    Out[66]: 
           acct_num
    0  411889000000
    1  987654321000