web-dev-qa-db-ja.com

Pythonで数千を区切るために数値をコンマにフォーマット

「Lead Rev」という列があるデータフレームがあります。この列は、(100000や5000など)のような数字のフィールドです。これらの数値をフォーマットして、コンマを3桁の区切り記号として表示する方法を知りたい。

次のようなものですか: '{:、}'。format( 'Lead Rev')

「Lead Rev」は私の列名です。データセットに200,000行以上あります。

これは私のエラーです:

ValueErrorトレースバック(最後の最後の呼び出し)in()----> 1 '{:、}'。format( 'Lead Rev')

ValueError:「s」とともに「、」または「_」を指定することはできません。

13
Sandy Tumma

すべてのフロートにデフォルトでカンマ区切りを表示するには、次を設定します。

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

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

17
jeffhale

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
14
flivan

プレゼンテーション用:

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

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

2
Ran Feldesh
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
0
Eurofut

,などのグループ化オプションは、数値表示タイプでのみサポートされています。数値表示タイプを指定する必要があります。 options を読んでください。

0
user2357112

Applyまたはstackメソッドを使用できます

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