pandas中创建多级索引的方法

(1)方法一:使用pandas.MultiIndex.from_arrays()

In [25]: pd.MultiIndex.from_arrays([['a', 'a', 'b', 'b'],[1, 2, 1, 2]])
Out[25]:
MultiIndex(levels=[['a', 'b'], [1, 2]],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]])

上例中,多级索引的对应关系是:

a  1
   2

b  1
   2

通俗的说就是a1,a2和b1,b2。

(2)方法2:使用pd.MultiIndex.from_tuples()

In [26]: pd.MultiIndex.from_tuples([('a', 1),('a', 2),('b', 1),('b', 2)])
Out[26]:
MultiIndex(levels=[['a', 'b'], [1, 2]],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]])

(3)上面两种方法都很烦,最简单的方法是使用笛卡尔乘积:pd.MultiIndex.from_product()

In [27]: pd.MultiIndex.from_product([['a', 'b'], [1, 2]])
Out[27]:
MultiIndex(levels=[['a', 'b'], [1, 2]],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]])

还可以为创建的索引指定名称

In [28]: pop
Out[28]:
广东  2017    3387964
    2018     658964
广西  2017     458752
    2018     698256
湖南  2017     125874
    2018     658963
dtype: int64

In [29]: pop.index.names = [ '省份','年份']

In [30]: pop
Out[30]:
省份  年份
广东  2017    3387964
    2018     658964
广西  2017     458752
    2018     698256
湖南  2017     125874
    2018     658963
dtype: int64

 

既然行索引可以有多级的,那么,自然而然地,列也有多级索引。下面我们创建一个多行多列的索引。举例如下:

In [33]: index = pd.MultiIndex.from_product([['广东', '广西'], [2017, 2018]], n
    ...: ames=['province', 'year'])

In [34]: column = pd.MultiIndex.from_product([['IT行业','制造业'], ['软件','硬
    ...: 件']], names=['行业', '岗位'])

我们模拟一组数据:

In [41]: data = np.random.randint(100,2000,size=(4,4))
In [42]: industry_data = pd.DataFrame(data, index=index,colum

In [43]: industry_data
Out[43]:
行业             IT行业         制造业
岗位               软件    硬件    软件    硬件
province year
广东     2017     1632     847    200     1495
         2018     176     1179    718     973
广西     2017     1995     1973   1096     1111
         2018     1209     668    1128     1330

多级索引的切片与普通索引类似。下载我们再讲。

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值