Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Formatting issues?
#1
Here's some code:
format_mapping2 = {'ES_Cum_%ROI':'{:.2%}','Port_Cum_%ROI':'{:.2%}','Port_Marg_Tot':'{:.2f}'}
for key, value in format_mapping2.items():
    comp_df[key] = comp_df[key].apply(value.format)
print(comp_df)
comp_df = comp_df.apply(pd.to_numeric)
print(comp_df.dtypes)
ES_mean = comp_df.iloc[:,0].mean()
With lines 1-3, comp_df prints with the formatting I want.

I then want to do further processing, though... like get mean, std, min/max, etc. When I include the last line, I get: ValueError: Unable to parse string "276.50%" at position 0 . If I take out line 5, then I get TypeError: Could not convert 272.31%165.15% to numeric (that's why I tried WITH line 5).

So--when I format these columns as percentages, am I actually changing them to strings (with or without lines 1-3, dtypes show up as "object" for all columns)? And if they are strings, how to I change them back to numeric so I can proceed with the further processing? Thanks!
Reply
#2
This works:
ES_mean = comp_df.iloc[:,0].mean(); print('ES_Cum_%ROI mean is {:.2%}'.format(ES_mean))
Port_mean = comp_df.iloc[:,1].mean(); print('Port_Cum_%ROI mean is {:.2%}'.format(Port_mean))
ES_worst = comp_df.iloc[:,0].min(); Port_worst = comp_df.iloc[:,1].min()
ES_std = comp_df.iloc[:,0].std(); Port_std = comp_df.iloc[:,1].std()
print('ES worst = {:.2%}'.format(ES_worst)); print('Port worst = {:.2%}'.format(Port_worst))
holder = comp_df.agg({'ES_Cum_%ROI':['mean', 'std'], 'Port_Cum_%ROI':['mean','std']}) #computing agg before formatting to %
format_mapping2 = {'ES_Cum_%ROI':'{:.2%}','Port_Cum_%ROI':'{:.2%}','Port_Marg_Tot':'{:.2f}'}
for key, value in format_mapping2.items():
    comp_df[key] = comp_df[key].apply(value.format)
print(comp_df)
pd.options.display.float_format = '{:.2%}'.format
print(holder)
Because I couldn't process after formatting, I had to add line 6 and call it in line 12. I also had to format twice: lines 7-9 and 11.

Is there an easier way or is this how it must be done?
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  String formatting (strptime) issues Henrio 2 811 Jan-06-2023, 06:57 PM
Last Post: deanhystad
  OpenPyXl formatting issues kpayney1 0 1,593 Nov-26-2021, 01:56 AM
Last Post: kpayney1
  Python random formatting issues Barnettch3 10 5,824 Jan-28-2018, 11:04 PM
Last Post: Gribouillis

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020