2

我有一个二维 DataFrame,为简单起见,它看起来像:

df = pd.DataFrame([(1,2.2,5),(2,3,-1)], index=['row1', 'row2'], columns = ["col1","col2",'col3'])

输出:

      col1  col2  col3
row1     1   2.2     5
row2     2   3.0    -1

按值排序的最佳方法是什么:

RowName  ColName  Value
row2     col3      -1
row1     col1      1
row2     col1      2
row1     col2      2.2
row2     col2      3.0
row1     col3      5

我确实尝试过使用 .stack(),并没有走得太远,使用嵌套的 for 循环构造它是可能的 - 但不优雅..

这里有什么想法吗?

4

2 回答 2

3

熔体是一个反向拆垛

In [6]: df
Out[6]: 
      col1  col2  col3
row1     1   2.2     5
row2     2   3.0    -1

In [7]: pd.melt(df.reset_index(),id_vars='index')
Out[7]: 
  index variable  value
0  row1     col1    1.0
1  row2     col1    2.0
2  row1     col2    2.2
3  row2     col2    3.0
4  row1     col3    5.0
5  row2     col3   -1.0
于 2013-06-21T19:41:11.430 回答
1

stack() 加上 sort() 似乎给出了所需的输出

In [35]: df
Out[35]: 
      col1  col2  col3
row1     1   2.2     5
row2     2   3.0    -1

In [36]: stacked = df.stack()

In [38]: stacked.sort()

In [39]: stacked
Out[39]: 
row2  col3   -1.0
row1  col1    1.0
row2  col1    2.0
row1  col2    2.2
row2  col2    3.0
row1  col3    5.0
于 2013-06-21T20:08:22.633 回答