pandas索引介绍2-布尔(逻辑)索引和混合索引

本文为IPython下的md文件直接导入生成

import pandas as pd
import numpy as np
T_data
#这里,我们首先来讲解pandas中利用布尔类型进行索引的方法
#筛选数据中Survivied为1的所有记录,即对行元素进行筛选
T_data.loc[T_data["Survived"]==1,]
PassengerIdSurvivedPclassNameSexAge
A211Cumings, Mrs. John Bradley (Florence Briggs Th…female38.0
B313Heikkinen, Miss. Lainafemale26.0
C411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.0
H913Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)female27.0
I1012Nasser, Mrs. Nicholas (Adele Achem)female14.0
#上述命令中,通过T_data["Survived"]这一简单方法提取了"Survived"这一列的数据,然后检验其是否大于一,
#由于是作用于对行的筛选,所以我们需要将这一布尔向量放到行索引的位置上
#为了方便展示作用于列上的索引,我们建立如下数据
Score={"Li Ming":pd.Series([78,90,87]),
       "Zhang Yan":pd.Series([88,56,94]),
       "Yin Hong":pd.Series([92,85,93])}
Pd_Score=pd.DataFrame(Score)
Pd_Score.index=["Math","Chinese","English"]
Pd_Score
Li MingYin HongZhang Yan
Math789288
Chinese908556
English879394
#筛选所有科目均大于80分的学生,此时是通过对相关行元素的判断来达到筛选列的目的,
#因此,需要分为两步,首先提出出相关行元素,进行判断
#第二,将判断的布尔结果作用于列的筛选上
bool_index=(Pd_Score.loc["Math"]>80)&(Pd_Score.loc["Chinese"]>80)&(Pd_Score.loc["English"]>80)
bool_index
Li Ming False Yin Hong True Zhang Yan False dtype: bool
Pd_Score.loc[:,bool_index]
Yin Hong
Math92
Chinese85
English93
#将上述两步结合起来可写成如下命令
#我们更换了一种对行的索引方式
Pd_Score.loc[:,(Pd_Score.iloc[0]>80)&(Pd_Score.iloc[1]>80)&(Pd_Score.iloc[2]>80)]
Yin Hong
Math92
Chinese85
English93
Pd_Score
Li MingYin HongZhang Yan
Math789288
Chinese908556
English879394
#接下来讲解另一种索引的方法,前面我们提到过使用iloc[]和loc[]两种方法分别通过下标索引和标签索引
#这两种方法的优点在于它将标签和下标索引的两种方式很好的进行了区分,但同样地,如果我们想同时进行下标和标签的索引,便行不通了
#事实上,Pandas库为我们还提供了另一种索引的方法ix,使用该方法便可以实现下标和标签的混合索引,
#然而,当你导入pandas库,第一次使用该方法时,pandas可能会提醒你,该方法已经不建议采用,在后续版本中也可能会被舍弃掉
#ix方法不被建议采用的原因主要还是在于其将下标和标签两种索引方式混合起来,可能会造成意想不到的后果,例如如果你的标签是数字,
#那么ix方法是很难区分你的索引目的是下标索引还是标签索引,而是用iloc[]或loc[]方法则无须担心,不过,在确认不会出错的情况下,
#ix方法还是能够在一定程度上方便我们的索引,在没被弃用之前,还是 可以体验一把的!^_^
Pd_Score.ix[:,[1]]
Yin Hong
Math92
Chinese85
English93
Pd_Score.ix[0:2,"Li Ming"]
Math 78 Chinese 90 Name: Li Ming, dtype: int64
Pd_Score.ix[["Math"],0:2]
Li MingYin Hong
Math7892
  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值