Home > Software engineering >  Number Formatting in DataFrame
Number Formatting in DataFrame

Time:06-25

How can I format a subset of a DataFrame according to a custom formatting logic?

Before:

Country Last Previous Abs. Change
0 United States 8.60 8.30 0.30
1 Japan 2.50 2.50 0.00
2 China 2.00 2.10 -0.10
3 United Kingdom 9.10 9.00 0.10
4 Euro Area 8.10 7.40 0.70

After:

Country Last Previous Abs. Change
0 United States 8.6 8.3 30 bp
1 Japan 2.5 2.5 0 bp
2 China 2.0 2.1 -10 bp
3 United Kingdom 9.1 9.0 10 bp
4 Euro Area 8.1 7.4 70 bp

CodePudding user response:

Original Data:

df = pd.DataFrame({'Country': ['United States', 'Japan','China','United Kingdom','Euro Area'],
                    'Last': [8.60, 2.50, 2.00, 9.10, 8.10],
                    'Previous': [8.30, 2.50, 2.10, 9.00, 7.40],
                    'Abs. Change': [0.30, 0.00, -0.10, 0.10, 0.70]})

1 decimal rounding

df[['Country', 'Last', 'Previous']] = df[['Country', 'Last', 'Previous']].round(1)

Add bp

df['Abs. Change'] = df['Abs. Change'].apply(lambda x: str(x)   ' bp')

Result

print(df)

         Country  Last  Previous Abs. Change
0   United States   8.6       8.3      0.3 bp
1           Japan   2.5       2.5      0.0 bp
2           China   2.0       2.1     -0.1 bp
3  United Kingdom   9.1       9.0      0.1 bp
4       Euro Area   8.1       7.4      0.7 bp
  • Related