繁体   English   中英

将Pandas DataFrame列转换为行

[英]Convert Pandas DataFrame columns to rows

我有以下字典,我转换为数据帧

players_info = {'Afghanistan': {'Asghar Stanikzai': 809.0,
  'Mohammad Nabi': 851.0,
  'Mohammad Shahzad': 1713.0,
  'Najibullah Zadran': 643.0,
  'Samiullah Shenwari': 774.0},
 'Australia': {'AJ Finch': 1082.0,
  'CL White': 988.0,
  'DA Warner': 1691.0,
  'GJ Maxwell': 822.0,
  'SR Watson': 1465.0},
 'England': {'AD Hales': 1340.0,
  'EJG Morgan': 1577.0,
  'JC Buttler': 985.0,
  'KP Pietersen': 1176.0,
  'LJ Wright': 759.0}}

pd.DataFrame(players_info)

结果输出是

在此处输入图片说明

但是我希望将列映射为如下所示的行

Player            Team           Score
Mohammad Nabi     Afghanistan    851.0
Mohammad Shahzad  Afghanistan   1713.0  
Najibullah Zadran Afghanistan    643.0  
JC Buttler        England        985.0
KP Pietersen      England       1176.0
LJ Wright         England        759.0

我尝试过reset_index但它没有按我的要求工作。 我怎样才能做到这一点 ?

你需要:

df = df.stack().reset_index()
df.columns=['Player', 'Team', 'Score']

df.head(5)输出:

      Player    Team    Score
0   AD Hales    Score   1340.0
1   AJ Finch    Team    1082.0
2   Asghar Stanikzai    Player  809.0
3   CL White    Team    988.0
4   DA Warner   Team    1691.0

让我们使用melt对此刺一下。 应该相当快。

df.rename_axis('Player').reset_index().melt('Player').dropna()

                Player     variable   value
2     Asghar Stanikzai  Afghanistan   809.0
10       Mohammad Nabi  Afghanistan   851.0
11    Mohammad Shahzad  Afghanistan  1713.0
12   Najibullah Zadran  Afghanistan   643.0
14  Samiullah Shenwari  Afghanistan   774.0
16            AJ Finch    Australia  1082.0
18            CL White    Australia   988.0
19           DA Warner    Australia  1691.0
21          GJ Maxwell    Australia   822.0
28           SR Watson    Australia  1465.0
30            AD Hales      England  1340.0
35          EJG Morgan      England  1577.0
37          JC Buttler      England   985.0
38        KP Pietersen      England  1176.0
39           LJ Wright      England   759.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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