一分钟一个Pandas小技巧(四)

暂更至此,有人看再更。

纸上得来终觉浅,绝知此事要躬行,所谓的熟练使用Pandas是建立在您大致了解每个函数功能上,希望本系列能给您带来些许收获。

本篇涉及的知识点:

  1. 一维表和二维表互换
    • stack()和unstack()
    • pivot()和pivot_table()
  2. 高性能查询和赋值
    • query()
    • eval()
  3. 快速计算同比环比、差异
    • diff()
    • pct_change()

一维表和二维表互换

  • 一维表是指表中各维相互独立,且不可再分的表
  • 二维表是指表中部分列不独立,或者说可以归为一类的表

stack()和unstack()

从单词上看这是堆积、出栈的意思。那我们只要把行索引想象成栈那就很容易理解这两个函数了。

  • stack是进栈,把列索引堆到行索引里面,那就形成了MultiIndex
  • unstack是出栈,把行索引挤出到列索引去,那样就把MultiIndex变成了普通的Index

但是当原DataFrame没有MultiIndex时,unstack之后就会把列弹回到原Index前面形成MultiIndex。

# 首先创建一个非MultiIndex的一维表
df=pd.DataFrame()
df['product']=['A','B']*3
df['city']=['Beijing','Shanghai','Guangzhou']*2
df['revenue']=np.random.randint(100,1000,6)
df.index = pd.date_range(start='2020/1/31',end='2020/6/30',freq='m',closed=None)
df

在这里插入图片描述
我们将列索引堆到行索引后面形成MultiIndex。
DataFrame.stack(level=- 1, dropna=True)

df.stack().to_frame()

在这里插入图片描述
使用unstack后的效果是这样的。
DataFrame.unstack(level=- 1, fill_value=None)

df.unstack().to_frame()

在这里插入图片描述
如之前所说,普通Index的DataFrame使用unstack后会把列索引堆到原本的行索引之前形成MultiIndex。
这上面两种情况看起来并不是我们所需要的结果,那我们看看stack和unstack在MultiIndex上的表现是如何的。

# 创建一个MultiIndex的DataFrame
val = np.random.randint(1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值