我有以下数据框:
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()
也没有帮助(或者也许我没有使用它)。
答案 0 :(得分:1)
将set_index
与stack
与rename_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