让我们看一下这个数据框:
pd.DataFrame(dict(Col1=["a","c"],Col2=["b","d"],Col3=[1,3],Col4=[2,4]))
Col1 Col2 Col3 Col4
0 a b 1 2
1 c d 3 4
我希望在Col1列和Col2列中每个值都有一行(n = 2和r = 2,所以期望的数据帧有2 * 2 = 4行)。
预期结果:
Ind Value Col3 Col4
0 Col1 a 1 2
1 Col1 c 3 4
2 Col2 b 1 2
3 Col2 d 3 4
我该怎么办?
答案 0 :(得分:2)
熊猫融化在这里工作;其余仅与适当地重新定位和重命名列有关。
使用pandas melt来转换数据帧,并使用Col3和4作为索引变量。熔体通常从宽到长转变。
下一步-重新索引这些列,并使用变量和值作为前导列。
最后,适当地重命名列。
(df.melt(id_vars=['Col3','Col4'])
.reindex(['variable','value','Col3','Col4'],axis=1)
.rename({'variable':'Ind','value':'Value'},axis=1)
)
Ind Value Col3 Col4
0 Col1 a 1 2
1 Col1 c 3 4
2 Col2 b 1 2
3 Col2 d 3 4