简体   繁体   中英

Pandas dataframe change table structure

Hi everyone.

Bronze Games Gender Gold Silver
 1      1936  Male   2     3
Nan     1936  Female 1     1

I want to reshape this table like the following table, is it possible ??

       Male                      Female
Games  Gold Silver Bronze        Gold Silver Bronze
1936    2    3      1             1    1      NaN
1948    3    2      1             5    4      1

I'm beginner in pandas so I get only this (for now).

import pandas as pd

data = {
    'Bronze': [1, None, 1, 1],
    'Games': [1936, 1936, 1948, 1948], 
    'Gender': ['Male', 'Female', 'Male', 'Female'],
    'Gold': [2, 1, 3, 5],
    'Silver': [3, 1, 2, 4],
}

df = pd.DataFrame(data)

print df

male = df[ df.Gender == 'Male' ]
female = df[ df.Gender == 'Female' ]
new_df = pd.merge(left=male, right=female, on='Games', suffixes=(' Male', ' Female'))

print new_df[ ['Games', 'Gold Male', 'Silver Male', 'Bronze Male', 'Gold Female', 'Silver Female', 'Bronze Female'] ]

data:

   Bronze  Games  Gender  Gold  Silver
0       1   1936    Male     2       3
1     NaN   1936  Female     1       1
2       1   1948    Male     3       2
3       1   1948  Female     5       4

result:

   Games  Gold Male  Silver Male  Bronze Male  Gold Female  Silver Female  Bronze Female
0   1936          2            3            1            1              1            NaN
1   1948          3            2            1            5              4              1

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