#构造宽表数据 d = {'names': ['小明','小王','小李','小张','小陈'], 'Chinese': [60,90,100,90,90],'Math':[100,90,90,80,80],'English':[100,90,100,90,100]} df = pd.DataFrame(data=d) #设置不需要转换的列"names",并对转换后的列设置列名 df_melt=pd.melt(df,id_vars=['names'],var_name='Subjects',value_name='Score') df_melt pd.melt(df, id_vars=['names'], value_vars=['Chinese']) (二)多个value_var pd.melt(df, id_vars=['names'], value_vars=['Chinese','Math']) 案例三:宽表→长表,忽略索引 pd.melt(df, id_vars=['names'], value_vars=['Chinese','Math'] ,ignore_index=False) (一)最外层索引 import pandas as pd import pandas as pd import numpy as np d = {'names': ['小明','小王','小李','小张','小陈'], 'Chinese': [60,90,100,90,90],'Math':[100,90,90,80,80],'English':[100,90,100,90,100]} df = pd.DataFrame(data=d) print(df) df.columns = [list('ABCD'), list('EFGH')] print(df) print(pd.melt(df, col_level=0, id_vars=['A'], value_vars=['B','C'])) (二)内层索引 d = {'names': ['小明','小王','小李','小张','小陈'], 'Chinese': [60,90,100,90,90],'Math':[100,90,90,80,80],'English':[100,90,100,90,100]} df = pd.DataFrame(data=d) print(df) df.columns = [list('ABCD'), list('EFGH')] print(df) print(pd.melt(df, col_level=1, id_vars=['E'], value_vars=['B','C'])) (三)复合索引 d = {'names': ['小明','小王','小李','小张','小陈'], 'Chinese': [60,90,100,90,90],'Math':[100,90,90,80,80],'English':[100,90,100,90,100]} df = pd.DataFrame(data=d) print(df) df.columns = [list('ABCD'), list('EFGH')] print(df) print(pd.melt(df, id_vars=[('A','E')], value_vars=['B','C']))