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

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

举例
一维表 df

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

表一:一维表
二维表 df2
在这里插入图片描述

介绍两种转换方式。

一、stack & unstack

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

unstack 将一维表转换为二维表

# 第一步
df1 =df.set_index(['key1','key2'])
# 运用unstack,不写参数,默认转换最里层的index,也就是key2;
df2=df1.unstack()
df2.reset_index()

在这里插入图片描述

# 也可以指定要转换的索引
df1.unstack('key1')
# 或
df1.unstack(0)

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

stack 将二维表转换为一维表

df2.stack()

二、pivot & melt

pivot 将一维表转换为二维表

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

melt将二维表转换为一维表

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

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

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

Tips

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

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

multiindex 的索引方式

外层索引可以包含式地使用内层索引,反过来则不行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RessCris

老铁门多支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值