在 Pandas Python 中做与支点相反的事情 [英] Doing the opposite of pivot in pandas Python

查看:57
本文介绍了在 Pandas Python 中做与支点相反的事情的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试做与 Pandas 中的枢轴相反的事情.想知道是否有人可以提供一些帮助?尝试从下面转换数据

I'm trying to do the opposite of pivot in pandas. Wondering whether someone can provide some assistance? Trying to transform the data from the below

|Date|A|B|C|D|E |
|----|-|-|-|-|--|
|2005|1|2|3|4|50|
|2006|6|7|8|9|10|

|Date|X|Val|
|----|-|---|
|2005|A|1  |
|2005|B|2  |
|2005|C|3  |
etc 
|2006|A|6  |
etc
|2006|E|10 |

非常感谢

推荐答案

使用 set_index堆栈:

df = df.set_index('Date').stack().reset_index(name='Val').rename(columns={'level_1':'X'})
print (df)
   Date  X  Val
0  2005  A    1
1  2005  B    2
2  2005  C    3
3  2005  D    4
4  2005  E   50
5  2006  A    6
6  2006  B    7
7  2006  C    8
8  2006  D    9
9  2006  E   10

或者 melt,但值的顺序不同:

Or melt, but there is different ordering of values:

df = df.melt('Date', var_name='X', value_name='Val')
print (df)
   Date  X  Val
0  2005  A    1
1  2006  A    6
2  2005  B    2
3  2006  B    7
4  2005  C    3
5  2006  C    8
6  2005  D    4
7  2006  D    9
8  2005  E   50
9  2006  E   10

所以对于相同的输出添加 sort_values:

So for same output add sort_values:

df = (df.melt('Date', var_name='X', value_name='Val')
        .sort_values(['Date','X'])
        .reset_index(drop=True))
print (df)
   Date  X  Val
0  2005  A    1
1  2005  B    2
2  2005  C    3
3  2005  D    4
4  2005  E   50
5  2006  A    6
6  2006  B    7
7  2006  C    8
8  2006  D    9
9  2006  E   10

这篇关于在 Pandas Python 中做与支点相反的事情的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆