Python pandas:在行中旋转 DataFrame 列

Python pandas: pivot DataFrame columns in rows

我有一个 pandas DataFrame 如下,显示了学生在多个科目中的分数:

       Name    Subject    Score
0       Tom          A       91
1       Tom          B       92
2       Tom          C       93
3       Bob          A       94
4       Bob          C       95
5       Ali          B       96
6       Ali          C       97

请注意,并非每个学生的所有科目都有分数。我想将它转换成这样的 DataFrame:

      Name     A     B     C
0      Tom    91    92    93
1      Bob    94          95    
2      Ali          96    97

本次转型要实现的目标:

  1. 按 'Name'
  2. 对分数进行分组
  3. 插入主题列
  4. 将分数排列在名字和科目space交叉处

我是 pandas 的新手,但我研究了 DataFrame.pivot_table(),但不幸的是找不到正确的方法。

您使用 pivot_table 来解决这个问题是正确的:

df = df.pivot_table(index='Name', values='Score', columns='Subject') \
    .reset_index() \
    .rename_axis(None, axis=1)
print(df)

输出:

  Name     A     B     C
0  Ali   NaN  96.0  97.0
1  Bob  94.0   NaN  95.0
2  Tom  91.0  92.0  93.0

Pivot 也适用于这种情况:

df = df.pivot(index='Name', values='Score', columns='Subject') \
    .reset_index() \
    .rename_axis(None, axis=1)

这是解决方案

import pandas as pd
df= DATAFRAME [ as yours]
df1=df.pivot(index='Name',columns = 'Subject', values = 'Score').fillna('').round(decimals=0).astype(object)

输出