#转置行列
import pandas as pd
import numpy as np
df = pd.read_excel(r"C:\Users\jsjilu\Desktop\jsj\data5.xlsx")
df.T
df.T.T #二次转置不变
#用stack把表格转化为树状,就是索引方式的重塑
df
df.stack()
#长宽表格转换
#一种是用stack(),另一种是用melt()import pandas as pd
import numpy as np
df = pd.read_excel(r"C:\Users\jsjilu\Desktop\jsj\data7.xlsx")
dfdf.set_index(["firm","name"])
df.set_index(["firm","name"]).stack()
df.set_index(["firm","name"]).stack().reset_index()
#用melt
import pandas as pd
import numpy as np
df = pd.read_excel(r"C:\Users\jsjilu\Desktop\jsj\data7.xlsx")
df.melt(id_vars = ["firm","name"],var_name = "years",value_name = "sale")
#id_vars参数用于指明宽表转换到长表时保持不变的列,var_name表示原来的列索引转换为”行索引“对应的列名,value_name表示新索引对应的值的列名
#长表换成宽表
import pandas as pd
import numpy as np
df = pd.read_excel(r"C:\Users\jsjilu\Desktop\jsj\data7.xlsx")
df2 = df.melt(id_vars = ["firm","name"],var_name = "years",value_name = "sale")
df2.pivot_table(index = ["firm","name"],columns = "years",values = "sale") #和melt互为逆运算
![]()