数据分析-day04-pandas-dataFrame、series的复合索引的操作

Pandas复合索引实操
本文演示了如何使用Python的Pandas库进行DataFrame和Series的复合索引操作,包括设置多级索引、通过复合索引进行数据检索以及利用swaplevel方法交换索引层级,适合初学者实践复合索引的管理和数据访问。

 

#!usr/bin/env python
#-*- coding:utf-8 _*-
'''
@author:Administrator
@file: pandas_dataframe_series_index_demo.py
@time: 2020-01-05 下午 1:33
'''
import pandas as pd;
import numpy as np
a = pd.DataFrame({'a': range(7),'b': range(7, 0, -1),'c': ['one','one','one','two','two','two', 'two'],'d': list("hjklmno")})
print(a)
print("==================将列设置为索引")
b=a.set_index(["c","d"]);
print(b)
#series的复合索引取值,直接在括号中写索引就可以了
print("===================series的复合索引取值,直接在括号中写索引就可以了")
c=b["a"]
print(c)
print("===================series的复合索引取值 c['one']['k']")
d=c['one']['k'];print(d)
print("===================series的复合索引取值,通过遍历内索引,获取数据")
#level相当于就是复合索引的里外层,交换了里外层
e=c.swaplevel()  #################################################要选取一列c=b["a"],不能用b
print(e)
#获取指定二级索引
print("获取指定二级索引:")
d=e["h"];print(d)
print("===================dataframe的复合索引取值,直接在括号中写索引就可以了")
b=a.set_index(["c","d"]);
print(b)
c=b[["a"]]
print("==================获取a列")
print(c)
e=c.loc["one"].loc["k"]
print("==================获取e:")
print(e)
print("=============swapper:")
d=c.swaplevel().loc["k"]   ###################c=b[["a"]] 是一个dataframe,注意和series的区别
print(d)

 a  b    c  d
0  0  7  one  h
1  1  6  one  j
2  2  5  one  k
3  3  4  two  l
4  4  3  two  m
5  5  2  two  n
6  6  1  two  o
==================将列设置为索引
       a  b
c   d      
one h  0  7
    j  1  6
    k  2  5
two l  3  4
    m  4  3
    n  5  2
    o  6  1
===================series的复合索引取值,直接在括号中写索引就可以了
c    d
one  h    0
     j    1
     k    2
two  l    3
     m    4
     n    5
     o    6
Name: a, dtype: int64
===================series的复合索引取值 c['one']['k']
2
===================series的复合索引取值,通过遍历内索引,获取数据
d  c  
h  one    0
j  one    1
k  one    2
l  two    3
m  two    4
n  two    5
o  two    6
Name: a, dtype: int64
获取指定二级索引:
c
one    0
Name: a, dtype: int64
===================dataframe的复合索引取值,直接在括号中写索引就可以了
       a  b
c   d      
one h  0  7
    j  1  6
    k  2  5
two l  3  4
    m  4  3
    n  5  2
    o  6  1
==================获取a列
       a
c   d   
one h  0
    j  1
    k  2
two l  3
    m  4
    n  5
    o  6
==================获取e:
a    2
Name: k, dtype: int64
=============swapper:
     a
c     
one  2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值