我有一个数据框
Date Brand Value_A Value_B Metric_A Metric_b
1 xx dd 1 6 A d
2 xx dd 2 5 A D
3 zxx d 3 6 A f
我想转换两个:
Date Brand Value Metric
1 xx dd 1 A
2 xx dd 2 A
3 zxx d 3 A
4 xx dd 6 d
5 xx d 5 D
6 zxx dd 6 f
我不认为melt可以解决此类问题,因为我必须列标题
答案 0 :(得分:2)
这是一个wide_to_long
问题
pd.wide_to_long(df.reset_index(),['Value','Metric'],
i=['Date','Brand','index'],
j='drop',sep='_',suffix='\w+').\
reset_index(level=[0,1])
Out[748]:
Date Brand Value Metric
index drop
1 A xx dd 1 A
B xx dd 6 d
2 A xx dd 2 A
B xx dd 5 D
3 A zxx d 3 A
B zxx d 6 f
答案 1 :(得分:1)
制作2个单独的数据框,重命名列并合并
df1 = df[['Date','Brand','Value_A','Metric_A']]
df2 = df[['Date','Brand','Value_B','Metric_B']]
coluns = ['Date','Brand','Value','Metric']
df1.columns = coluns
df2.columns = coluns
df_full = pd.concat([df1,df2], ignore_index = True)