将Pandas数据帧列转换为行

2024-10-01 13:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的dict,我把它转换成了dataframe

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)

结果输出是

enter image description here

但是我希望列被映射成如下所示的行

^{pr2}$

我试过reset_index,但它没有按我想要的方式工作。我怎么能做到呢?在


Tags: infodataframedictplayersaustraliaafghanistanmohammadnajibullah
2条回答

您需要:

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

df.head(5)的输出:

^{pr2}$

让我们用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

相关问题 更多 >