I have a float: 1.2333333
How do I change it into a two decimal number with a comma as a decimal point separator, eg 1,23?
Use str. format() with “{:. 2f}” as string and float as a number to display 2 decimal places in Python. Call print and it will display the float with 2 decimal places in the console.
format("%. 2f", 1.23456); This will format the floating point number 1.23456 up-to 2 decimal places, because we have used two after decimal point in formatting instruction %.
To convert number strings with commas in Python Pandas DataFrame to float, we can use the astype method. to convert the values in the data frame df 's colname column to a float by removing the commas from the strings with str. replace .
To get two decimals, use
'%.2f' % 1.2333333
To get a comma, use replace()
:
('%.2f' % 1.2333333).replace('.', ',')
A second option would be to change the locale to some place which uses a comma and then use locale.format()
:
locale.setlocale(locale.LC_ALL, 'FR')
locale.format('%.2f', 1.2333333)
The locale module can help you with reading and writing numbers in the locale's format.
>>> import locale
>>> locale.setlocale(locale.LC_ALL, "")
'sv_SE.UTF-8'
>>> locale.format("%f", 2.2)
'2,200000'
>>> locale.format("%g", 2.2)
'2,2'
>>> locale.atof("3,1415926")
3.1415926000000001
If you don't want to mess with the locale, you can of course do the formatting yourself. This might serve as a starting point:
def formatFloat(value, decimals = 2, sep = ","):
return "%s%s%0*u" % (int(value), sep, decimals, (10 ** decimals) * (value - int(value)))
Note that this will always truncate the fraction part (i.e. 1.04999 will print as 1,04).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With