0

I have this dataframe:

df = pd.DataFrame([["A", "2000-01", "100", "10%"],
                   ["A", "2000-02", "200", "20%"],
                   ["B", "2000-01", "150", "15%"],
                   ["B", "2000-02", "150", "15%"],
                   ["C", "2000-01", "250", "25%"],
                   ["C", "2000-02", "350", "35%"],
                   ["D", "2000-01", "500", "50%"],
                   ["D", "2000-02", "300", "30%"],],
                  columns=["Label", "Date", "Count", "Percentage"])

I want to transpose it as

Date A B C D
2000-01 10% 15% 25% 50%
2000-02 20% 15% 35% 30%

with

df_T= df.groupby(['Date','Label']).sum().transpose().stack(0).reset_index()
del df_T['level_0']
df_T[['A','B','C','D']] = df_T[['A','B','C','D']].apply(lambda x: x/x.sum(), axis=1)

I kinda got it.

But I'm failing with the percentages format. Thought this would work, but didn't (got an error):

 df_T['A','B','C','D'] = df_T['A','B','C','D'].map('{:,.2f}%'.format) 

What am I missing here?

Very important also, I would like to print some output as:

"In 2000-01, A = 10%, B = 15%, C = 25%, D = 50%. \n In 2000-02, A = 20%, B = 15%, C = 35%, D = 30%. "

to have a description text for a subsequent plot as an image (in case the image is not visible on the page and accessibility matters).

How's the best way to do it?

I'd appreciate some help!

user188439
  • 131
  • 1
  • 6

0 Answers0