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