将所有列设置为索引,或将数据框转换为多索引系列

时间:2018-11-11 07:58:51

标签: python python-3.x pandas dataframe series

我有以下数据框:

from    to  x     ratea
1       2   0.4   10
1       4   0.6   80
1       5   0.2   10
2       3   0.2   10
2       4   0.4   10
2       6   0.3   10
3       5   0.2   10
4       6   0.3   10

我的目标是拥有类似以下的东西:

from    to      
1   2   x       0.4
1   2   ratea   10
1   4   x       0.6
1   4   ratea   80
1   5   x       0.2
1   5   ratea   10
2   3   x       0.2
2   3   ratea   10
2   4   x       0.4
2   4   ratea   10
2   6   x       0.3
2   6   ratea   10
3   5   x       0.2
3   5   ratea   10
4   6   x       0.3
4   6   ratea   10

我将如何进行转换?

PS unstack()也没有帮助(或者也许我没有使用它)。

1 个答案:

答案 0 :(得分:1)

set_indexstackrename_axis结合使用以设置新的索引名称:

s = df.set_index(['from','to']).stack().rename_axis(['from','to','val'])
print (s)

from  to  val  
1     2   x         0.4
          ratea    10.0
      4   x         0.6
          ratea    80.0
      5   x         0.2
          ratea    10.0
2     3   x         0.2
          ratea    10.0
      4   x         0.4
          ratea    10.0
      6   x         0.3
          ratea    10.0
3     5   x         0.2
          ratea    10.0
4     6   x         0.3
          ratea    10.0
dtype: float64