简体   繁体   中英

Pivot table in Python using Pandas

I have a data frame which has data in following format:

在此处输入图像描述

I have to pivot up the Status column and Pivot down the states Columns to make table look like:

在此处输入图像描述

I am trying to do it using pd.pivot_table but unable to get the desired results. Here is what I am trying:

table = pd.pivot_table(data = covid19_df_latest, index = ['Date', 'Delhi', 'Maharashtra', 'Haryana'], values = ['Status'], aggfunc = np.max)
print(table) 

I am getting error "No numeric types to aggregate", Please suggest

Use DataFrame.melt with DataFrame.pivot_table :

df= (covid19_df_latest.melt(['Date','Status'], var_name='State')
                      .pivot_table(index=['Date','State'],
                                   columns='Status', 
                                   values='value', 
                                   aggfunc='max')
                      .reset_index()
                      .rename_axis(None, axis=1))
print (df)
       Date        State  Deceased  Identified  Recovered
0  14/05/20        Delhi      1200       10000       2000
1  14/05/20      Haryana      1000       20000        800
2  14/05/20  Maharashtra      1000       15000       3700

Details : Solution first unpivot Dataframe by melt :

print (covid19_df_latest.melt(['Date','Status'], var_name='State'))
       Date      Status        State  value
0  14/05/20  Identified        Delhi  10000
1  14/05/20   Recovered        Delhi   2000
2  14/05/20    Deceased        Delhi   1200
3  14/05/20  Identified  Maharashtra  15000
4  14/05/20   Recovered  Maharashtra   3700
5  14/05/20    Deceased  Maharashtra   1000
6  14/05/20  Identified      Haryana  20000
7  14/05/20   Recovered      Haryana    800
8  14/05/20    Deceased      Haryana   1000

and then pivoting with max aggregate function.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM