我有一个DataFrame如下:
ID V1 V2 V3 V4
3261 a i k 3
3262 b j l 2
3263 c m 4
3264 d j k 5
3265 e i 5
我想将其转换如下,有没有办法做到这一点?
ID NewHeader1 NewHeader2
3261 V1 a
3261 V2 i
3261 V3 k
3261 V4 3
3262 V1 b
3262 V2 j
3262 V3 l
3262 V4 2
3263 V1 c
3263 V2
3263 V3 m
3263 V4 4
3264 V1 d
3264 V2 j
3264 V3 k
3264 V4 5
3265 V1 e
3265 V2 i
3265 V3
3265 V4 5
如果需要其他信息,请与我们联系。
答案 0 :(得分:1)
pd.melt(df, id_vars ='ID', var_name='NewHeader1', value_name='NewHeader2')
Out:
ID NewHeader1 NewHeader2
0 3261 V1 a
1 3262 V1 b
2 3263 V1 c
3 3264 V1 d
4 3265 V1 e
5 3261 V2 i
6 3262 V2 j
7 3263 V2
8 3264 V2 j
9 3265 V2 i
10 3261 V3 k
11 3262 V3 l
12 3263 V3 m
13 3264 V3 k
14 3265 V3
15 3261 V4 3
16 3262 V4 2
17 3263 V4 4
18 3264 V4 5
19 3265 V4 5
您可以在最后为已排序的版本添加.sort_values(by='ID')
。
pd.melt(df, id_vars ='ID', var_name='NewHeader1', value_name='NewHeader2').sort_values('ID')
Out:
ID NewHeader1 NewHeader2
0 3261 V1 a
5 3261 V2 i
10 3261 V3 k
15 3261 V4 3
1 3262 V1 b
6 3262 V2 j
11 3262 V3 l
16 3262 V4 2
2 3263 V1 c
17 3263 V4 4
7 3263 V2
12 3263 V3 m
3 3264 V1 d
8 3264 V2 j
18 3264 V4 5
13 3264 V3 k
9 3265 V2 i
4 3265 V1 e
14 3265 V3
19 3265 V4 5