将数字格式化为逗号以在Python中分隔数千个

时间:2017-03-29 19:41:54

标签: python-3.x pandas ipython jupyter-notebook

我有一个数据框,其中有一个名为“Lead Rev”的列。此列是一个数字字段,如(100000或5000等...)。我想知道如何格式化这些数字以将逗号显示为千位分隔符。

是否类似:'{:,}'。format('Lead Rev')

'Lead Rev'是我的专栏名称。我的数据集中有超过200,000行。

这是我的错误:

ValueError Traceback(最近一次调用最后一次)  in() ----> 1'{:,}'。format('Lead Rev')

ValueError:无法使用's'指定','或'_'。

8 个答案:

答案 0 :(得分:11)

您可以使用apply()来获得所需的结果。这也适用于浮动

import pandas as pd

series1 = pd.Series({'Value': 353254})
series2 = pd.Series({'Value': 54464.43})
series3 = pd.Series({'Value': 6381763761})

df = pd.DataFrame([series1, series2, series3])
print(df.head())

         Value
0  3.532540e+05
1  5.446443e+04
2  6.381764e+09

df['Value'] = df.apply(lambda x: "{:,}".format(x['Value']), axis=1)
print(df.head())

             Value
0        353,254.0
1        54,464.43
2  6,381,763,761.0

答案 1 :(得分:8)

要使您的所有彩车默认显示逗号分隔符,请设置以下内容:

pd.options.display.float_format = '{:,}'.format

https://pandas.pydata.org/pandas-docs/version/0.23.4/options.html

答案 2 :(得分:4)

最简单的方法是

df = df.style.format('{:,}')

答案 3 :(得分:2)

可能是最简洁的解决方案:df[column].map('{:,d}'.format)

答案 4 :(得分:0)

,等分组选项仅支持数字演示文稿类型。您需要指定数字表示类型。阅读options

答案 5 :(得分:0)

class commaConverter:
    """
    add and remove commas to numberstring 1000.00+> 1,000.00
    """
    def __init__(self,price):
        self.price=price
    def addCommas(self):
        price=self.price
        price=str(price)
        try:
            priceSplit = price.split('.')
            price1 = priceSplit[0]
            price2 = priceSplit[1]
        except IndexError:
            price1 = price
            price2 = '00'
        price1 = price1.strip(" ")
        newPrice = ''
        i = 0
        for x in price1[::-1]:
            if i == 3 and x != '-':
                newPrice = x + ',' + newPrice
                i = 1
            else:
                newPrice = x + newPrice
                i += 1
        commaPrice = newPrice + '.' + priceSplit[1]
        return str(commaPrice)
    def removeCommas(self):
        price=self.price
        price=price.replace(',','')
        price = price.replace('$', '')
        return price

答案 6 :(得分:0)

您可以使用Apply或stack方法

df.apply(lambda x: x.str.replace(',','.'))
df.stack().str.replace(',','.').unstack()

答案 7 :(得分:0)

演示:

df.head().style.format("{:,.0f}")

https://pbpython.com/styling-pandas.html