Home > front end >  pandas crosstab simplified view of multiple columns
pandas crosstab simplified view of multiple columns

Time:05-25

I already referred the posts enter image description here

CodePudding user response:

You can use crosstab with normalize='index' on your different columns and concat the results:

pd.concat([pd.crosstab(sf['id'], sf[c], normalize='index')
           for c in ['status', 'country']], axis=1).mul(100).add_suffix('_pct')

output:

    fail_pct  pass_pct  ANZ_pct  AUS_pct  UK_pct  USA_pct
id                                                       
1       50.0      50.0      0.0      0.0    50.0     50.0
2        0.0     100.0     50.0     50.0     0.0      0.0
handling NaNs:
pd.concat([pd.crosstab(sf['id'], sf[c].fillna('NA'), normalize='index')
             .drop(columns='NA', errors='ignore')
           for c in ['status', 'country']], axis=1).mul(100).add_suffix('_pct')

output:

    fail_pct  pass_pct  ANZ_pct  AUS_pct  UK_pct  USA_pct
id                                                       
1       50.0      50.0      0.0      0.0    50.0     50.0
2        0.0      75.0     50.0     50.0     0.0      0.0
  • Related