Python与数据科学实战课程——第三章Pandas:多级index

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

创建多级index的series

s1 = Series(np.random.randn(6))
s1

0 0.001150
1 -0.019820
2 0.922708
3 0.656468
4 -0.719109
5 0.957127
dtype: float64

s1 = Series(np.random.randn(6),index=[["1","1","1","2","2","2"],["a","b","c","a","b","c"]])
s1    #此时s1就有两级index   ,是一个二维结构,因此可以向dataframe转换
1  a    0.925230
   b    0.766318
   c    0.687740
2  a   -0.622509
   b   -0.593884
   c   -0.119193
dtype: float64
s1["1"]

a 0.925230
b 0.766318
c 0.687740
dtype: float64

type(s1["1"])   #可以看到其实这个series是由s1["1"],s1["2"]这两个series组成

pandas.core.series.Series

s1["1"]["a"]

0.92522961872552423

s1[:,"a"]

1 0.925230
2 -0.622509
dtype: float64

多级index的series与dataframe的互换
df1 = s1.unstack()
df1
abc
10.9252300.7663180.687740
2-0.622509-0.593884-0.119193
df2 = DataFrame([s1["1"],s1["2"]])
df2
abc
00.9252300.7663180.687740
1-0.622509-0.593884-0.119193
s2 = df1.unstack()
s2
a  1    0.925230
   2   -0.622509
b  1    0.766318
   2   -0.593884
c  1    0.687740
   2   -0.119193
dtype: float64
s2 = df1.T.unstack()
s2
1  a    0.925230
   b    0.766318
   c    0.687740
2  a   -0.622509
   b   -0.593884
   c   -0.119193
dtype: float64

创建多级index的dataframe

df = DataFrame(np.arange(16).reshape(4,4))
df
0123
00123
14567
2891011
312131415
df = DataFrame(np.arange(16).reshape(4,4),index=[["a","a","b","b"],["1","2","1","2"]])
df
0123
a10123
24567
b1891011
212131415
df = DataFrame(np.arange(16).reshape(4,4),index=[["a","a","b","b"],["1","2","1","2"]],columns=[["BJ","BJ","SH","GZ"],[8,9,8,8]])
df
BJSHGZ
8988
a10123
24567
b1891011
212131415
df["BJ"]
89
a101
245
b189
21213
type(df["BJ"])

pandas.core.frame.DataFrame

df["BJ"][8]
a  1     0
   2     4
b  1     8
   2    12
Name: 8, dtype: int32
df["BJ"][8]["a"]

1 0
2 4
Name: 8, dtype: int32

df["BJ"][8]["a"]["1"]         #多级index的dataframe的引用顺序  一级列名->二级列名->一级index名->二级index名

0

df["BJ"][8]["a"][1]       #多级index的dataframe的引用顺序  一级列名->二级列名->一级index名->二级index

4

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值