#构造宽表数据
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']))