pandas.unstack()

pandas.unstack()

当一个DataFrame有多个索引时,unstack() 这是一个根据索引行列转换的函数。个人认为初次接触比较难以理解。

这是针对于DataFrame这种类型的数据进行变换的一个函数,有一个重要的参数是level:

level : int, string, or list of these, default -1 (last level)

Level(s) of index to unstack, can pass level name

就是索引的序号——第几级索引。

用我自己的话说是,将第level个索引横向展开,其余的各级索引不动,不知道大家能不能理解。比如下面的例子SID的level为1,key的level为2.
如果还是不懂的话可以看下面这个例子:

转换后的column的values 还是一个numpy数组,只不过数组中的元素类型为元组。最后一句生成式的代码还可以重新命名表的列名。

>>> import pandas as pd
>>> df = pd.DataFrame({'month':[1,2,3],'year':[2,3,4]})
>>> df['SID'],df['key']=4,5
>>> df.set_index(['SID','key'],append=True)
           month  year
  SID key             
0 4   5        1     2
1 4   5        2     3
2 4   5        3     4
>>> df = df.set_index(['SID','key'],append=True)
>>> df
           month  year
  SID key             
0 4   5        1     2
1 4   5        2     3
2 4   5        3     4
>>> df = df.unstack(0)
>>> df
        month       year      
            0  1  2    0  1  2
SID key                       
4   5       1  2  3    2  3  4
>>> print(df.columns.values)
[('month', 0) ('month', 1) ('month', 2) ('year', 0) ('year', 1)
 ('year', 2)]
>>> type(df.columns.values)
<class 'numpy.ndarray'>
>>> type(df.columns.values[1])
<class 'tuple'>
>>> df.columns = ["_".join([str(i) for i in col]).strip() for col in df.columns.values]
>>> df
         month_0  month_1  month_2  year_0  year_1  year_2
SID key                                                   
4   5          1        2        3       2       3       4

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值