如何将n列切换到r行熊猫数据帧的行(最终数据帧中的n * r行)?

时间:2020-02-20 10:16:01

标签: python pandas dataframe

让我们看一下这个数据框:

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

我该怎么办?

1 个答案:

答案 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