让我们采用这个数据框:
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
请问我该怎么办?
最佳答案
Pandas 融化在这里完成了工作;剩下的只是适本地重新定位和重命名列。
使用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
关于python - 如何将 n 列切换为 r 行 pandas 数据帧的行(最终数据帧中的 n*r 行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60317569/