[英]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.