【Python】Pandas DataFrame 一维表二维表的转换


目录
一、stack & unstack
unstack 将一维表转换为二维表
stack 将二维表转换为一维表
二、pivot & melt
pivot 将一维表转换为二维表
melt将二维表转换为一维表
Tips
用pandas处理数据,我们经常获取到的是从数据库或者excel中获取的一维表。而常常需要重排,转换为二维表,类似于excel中的透视。

举例:
一维表 df

1 df = pd.DataFrame(
2 {
3 'key1':['one','two','three','one','two','four'],
4 'key2':['A','B','C','D','C','D'],
5 'value':np.random.randn(6)
6 }
7 )

 

 

二维表 df2

 

 

 


介绍两种转换方式。

一、stack & unstack


stack 和 unstack 的工作机制都是依赖于dataframe本身的多层索引进行转换的。
默认情况下,最内层是unstack的,也可以指定层级序号或名称来拆分特定层级。

unstack 将一维表转换为二维表

 1 # 第一步
 2 df1 =df.set_index(['key1','key2'])
 3 # 运用unstack,不写参数,默认转换最里层的index,也就是key2;
 4 df2=df1.unstack()
 5 df2.reset_index()
 6 
 7 
 8 
 9 # 也可以指定要转换的索引
10 df1.unstack('key1')
11 # 或
12 df1.unstack(0)

 

 

最后,可以通过reset_index方法去除索引。

stack 将二维表转换为一维表

1 df2.stack()

 



二、pivot & melt
pivot 将一维表转换为二维表

1 df.pivot('key1','key2','value')


melt将二维表转换为一维表

 

1 pd.melt(df,['key1','key2'])


也可以指定列的子集为值列

 

1 pd.melt(df,id_vars=['key1'], value_vars=['value'])



Tips
stack 和unstack方法可以用来处理多层数据。
也就是行和列索引不只一个的情况。

可参考 (https://blog.csdn.net/qq_41080850/article/details/86294173)

multiindex 的索引方式

外层索引可以包含式地使用内层索引,反过来则不行
————————————————
版权声明:本文为CSDN博主「RessCris」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41783424/article/details/109515240


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM