簡體   English   中英

Python pandas: pivot 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

請注意,並非每個學生在所有科目中都有分數。 我想將 pivot 變成這樣的 DataFrame :

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

在此 pivot 中要實現的目標:

  1. 按“名稱”對分數進行分組
  2. 插入主題列
  3. 在姓名和科目的交叉空間排列分數

我是 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)

Output:

  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)

Output 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM