How to insert a comma as a thousands separator in a pandas dataframe column?

前端 未结 5 1615
北恋
北恋 2020-12-10 06:53

I\'m trying to format the Dollar Amount column to have a comma thousands separator for easier viewing, but I haven\'t been able to figure it out. Can someone please show me

相关标签:
5条回答
  • 2020-12-10 07:36

    This is a more pandorable way to get the thousands separator.

    df['Dollar Amount']=df['Dollar Amount'].apply('{:,}'.format)
    
    0 讨论(0)
  • 2020-12-10 07:38

    If you need to insert thousands comma separators in a specific column and remove the decimal place:

    import pandas as pd
    df = pd.DataFrame([(0.21, 1000.0), (0.01, 2000000.0), (0.66, 1000.0), (0.21, 330000.0)], columns=['A', 'B'])
    

    Before:

          A          B
    0  0.21     1000.0
    1  0.01  2000000.0
    2  0.66     1000.0
    3  0.21   330000.0
    

    For "Col B" insert comma separators and remove decimal place: A slight adjustment to YOBEN_S's code above gives:

    lst = list(df.columns)
    lst.remove('A')
    for c in lst:
        df[c] = df[c].astype(int).apply(lambda x: f'{x:,}')
    

    After:

          A          B
    0  0.21      1,000
    1  0.01  2,000,000
    2  0.66      1,000
    3  0.21    330,000
    
    0 讨论(0)
  • 2020-12-10 07:43

    Here's a solution using locale that might help, as long as you're okay with formatting your numbers as strings:

    import pandas as pd
    import locale as lc
    
    # Get the list of all locale options
    all_locales = lc.locale_alias
    # I'll use US conventions since that's what you mentioned in your question
    lc.setlocale(lc.LC_ALL,all_locales["en_us"])
    
    df = pd.DataFrame({"Dollar Amount":[1000, 2000000, 2500.01]})
    df["Dollars Formatted"] = df["Dollar Amount"].apply(lambda x: "$"+lc.format("%.2f",x,True))
    

    The convenient thing about locale is that you can easily change between different number conventions if you need to, and it will continue to apply those conventions for the millions and billions separators.

    0 讨论(0)
  • 2020-12-10 07:48

    using map:

    df['Dollar Amount'] = df['Dollar Amount'].map("{:,}".format)
    

    you can also use style which is nicer and let you do all your styling in one line:

    df = df.style.format({'Dollar Amount': "{:,}"})
    
    0 讨论(0)
  • 2020-12-10 07:55

    Notice it will convert your float type to object

    df.DollarAmount.apply(lambda x : "{:,}".format(x))
    Out[509]: 
    0    5,721.48
    1     4,000.0
    2     4,769.0
    3      824.07
    4       643.6
    5       620.0
    Name: DollarAmount, dtype: object
    
    0 讨论(0)
提交回复
热议问题