簡體   English   中英

將每個學生 ID 的列更改為行

[英]Change columns to rows per student ID

我在 excel 表中有數據,我正在讀入數據框:

ID 年級 課程 Q1 號碼 Q1 信 Q2 編號 Q2 信
1 9 英語 73 69 C
1 9 數學 70 52 C
1 9 科學 69 C 80 一個

所需的輸出:

ID 年級 課程 學期 數字等級 字母等級
1 9 英語 第一季度 73
1 9 英語 第二季度 69 C
1 9 數學 第一季度 70
1 9 數學 第二季度 52 C
1 9 科學 第一季度 69 C
1 9 科學 第二季度 80 一個

我正在嘗試做 df.melt,但它不起作用。 任何幫助表示贊賞。

試試這個,使用pd.wide_to_long ,重命名一些列以使其更容易:

df = pd.read_clipboard()


dfm = df.set_index(['ID', 'Grade', 'Course'])\
        .rename(columns=lambda x: ' '.join(x.split(' ')[::-1]))\
        .reset_index()

df_out = pd.wide_to_long(dfm,
                         ['Number', 'Letter'], 
                         ['ID', 'Grade', 'Course'],
                         'Semester', sep=' ', suffix='.*')\
           .reset_index()

print(df_out)

輸出:

   ID  Grade   Course Semester  Number Letter
0   1      9  English       Q1      73      B
1   1      9  English       Q2      69      C
2   1      9     Math       Q1      70      B
3   1      9     Math       Q2      52      C
4   1      9  Science       Q1      69      C
5   1      9  Science       Q2      80      A

暫無
暫無

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

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