Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Float format in matplotlib table

Given a pandas dataframe, I am trying to translate it into a table by using this code:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = {"Name": ["John", "Leonardo", "Chris", "Linda"],
    "Location" : ["New York", "Florence", "Athens", "London"],
    "Age" : [41, 33, 53, 22],
    "Km": [1023,2312,1852,1345]}

df = pd.DataFrame(data)

fig, ax = plt.subplots()
ax.axis('off')
ax.set_title("Table", fontsize=16, weight='bold')
table = ax.table(cellText=df.values,
             bbox=[0, 0, 1.5, 1],
             cellLoc='center',
             colLabels=df.columns)

And it works. However I can figure out how to set the format for numbers as {:,.2f}, that is, with commas as thousands separators and two decimals.

Any suggestion?

like image 736
sono Avatar asked Oct 26 '25 07:10

sono


1 Answers

Insert the following two lines of code after df is created and the rest of your code works as desired.

The Age and Km columns are defined as type int; convert these to float before using your str.format:

df.update(df[['Age', 'Km']].astype(float))

Now use DataFrame.applymap(str.format) on these two columns:

df.update(df[['Age', 'Km']].applymap('{:,.2f}'.format))
like image 57
jeschwar Avatar answered Oct 28 '25 23:10

jeschwar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!