Search code examples
pythonpandasnumber-formattingseparator

How to add thousand separator to numbers in pandas


Assuming that I have a pandas dataframe and I want to add thousand separators to all the numbers (integer and float), what is an easy and quick way to do it?


Solution

  • When formatting a number with , you can just use '{:,}'.format:

    n = 10000
    print '{:,}'.format(n)
    n = 1000.1
    print '{:,}'.format(n)
    

    In pandas, you can use the formatters parameter to to_html as discussed here.

    num_format = lambda x: '{:,}'.format(x)
    def build_formatters(df, format):
        return {
            column:format 
            for column, dtype in df.dtypes.items()
            if dtype in [ np.dtype('int64'), np.dtype('float64') ] 
        }
    formatters = build_formatters(data_frame, num_format)
    data_frame.to_html(formatters=formatters)
    

    Adding the thousands separator has actually been discussed quite a bit on stackoverflow. You can read here or here.