2 回答
TA贡献1891条经验 获得超3个赞
让我们尝试一下melt
s = df.melt(['Date','Id']).dropna()
s['name'] = s.pop('variable') +'_'+ s.pop('Id').astype(str)
s
Date value name
0 2020-1-1 10.0 V1_1
1 2020-1-1 20.0 V1_2
2 2020-1-1 11.0 V1_3
3 2020-1-1 100.0 V2_1
4 2020-1-1 120.0 V2_2
5 2020-1-1 101.0 V2_3
7 2020-1-1 23.0 V3_2
TA贡献1772条经验 获得超8个赞
你可以这样做df.melt
df1 = df.melt(['Date','Id']).dropna()
df1 = df1.assign(Name=df1.Id.astype(str) + '_' + df1.variable)
df1[['Date','Name','value']]
输出
Date Name value
0 2020-1-1 1_V1 10.0
1 2020-1-1 2_V1 20.0
2 2020-1-1 3_V1 11.0
3 2020-1-1 1_V2 100.0
4 2020-1-1 2_V2 120.0
5 2020-1-1 3_V2 101.0
7 2020-1-1 2_V3 23.0
添加回答
举报