中国统计网|Python拍了拍你,一份【同时选择行列方法】的盘点送给你
本文插图
文末领取 【Python基础知识思维导图】
前置知识补充:
- 布尔索引:指的是通过传入一个判断条件来选择数据的方式 , 称之为布尔索引
- 普通索引:通过选择行/列名来选择数据的方式 , 称为普通索引
- 位置索引:通过传入具体的位置来选择数据的方式称为位置索引
- 切片索引:通过传入一个位置区间来获取数据的方式 , 称为切片索引
# 创建一个Serise —— 传入一个字典② d= { 'name':['qinlu','lulu','qinqin','junjun'], 'sex':['male','male','female','male'], 'age':[18,19,22,25] } s= pd.DataFrame(d,index= ['A1','A2','A3','A4']) s -- 输出结果: name sex age方式一布尔索引 + 普通索引选择指定的行和列布尔索引 + 普通索引是先对表进行布尔索引选择行 , 然后通过普通索引选择列: #case1:zjh-98 s[s['age']<=22] [['name','age']] --输出结果: nameage A1qinlu 18 A2lulu 19 A3 qinqin 22 # 找到符合条件的行 —— 得到数据结构 , 其实本身也是个数据框 # 然后再在这个数据行下 , 选择我们需要的列即可 , 因此 , 就完成了 , 对指定行、列进行选择; # case2: # 在以上基础上 , 只选择某一列 , 数据结构就变成了Series; s[s['age']<=22].name # 行、列索引放在同一个中 , 对行列同时选择: s.loc[s['age']<=22,['name','age']] A3 qinqin 22 注意需要使用loc , 不能使用iloc , 否则会出现以下报错: # 英:ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] types汉:基于位置的索引只能具有[整数 , 整数切片(起始点为INCLUDED , 结束点为EXCLUDED) , 类似整数的列表 , 布尔数组)类型 【中国统计网|Python拍了拍你,一份【同时选择行列方法】的盘点送给你】讲完普通索引 , 我们再来讲 , 使用“切片索引 + 切片索引”来选择指定行和列的方式 。方式二切片索引 + 切片索引选择指定的行和列切片索引 + 切片索引是同时传入行、列索引的位置区间进行数据选择 。
s.iloc[0:3,0:3] -- 常见错误1: s.iloc[[0:3],[0:3]] #位置索引注意需要使用iloc , 不能使用loc , 否则会出现以下报错:英:cannotdoslice indexing on <class'pandas.core.indexes.base.Index'> with these indexers [0] of <class'int'>; / 汉:无法使用<class'int'>的这些索引器[0]在<class>上进行切片索引方式三切片索引 + 普通索引选择指定的行和列结论:新版本的Jupyter Notebook , 目前已经不支持"ix"了! 如果是普通索引 , 就直接传入行或列名 , 用loc方法即可;如果是切片索引 , 也就是传入行或列名 , 用iloc方法即;如果是切片索引 + 普通索引 , 也就是行(列)用切片索引 , 列(行)用切片索引 , 列(行)用普通索引 , 看是否能够选择成功:
#case1:使用iloc发生报错 s.iloc[0:3,['name','age']]
推荐阅读
- 中年|中国-东盟区块链应用创新实验室揭牌
- IT爆料猿|中国电信6月5G用户数净增779万户,累计3784万
- 2020|影谱科技入选“2020中国AI商业落地价值潜力100强榜单”
- 中国航务周刊|港航业再现跨界收购!
- 招生|有道词典与中国教育在线合作,开通“高考招生”直播服务
- CSDN|由 Apache 说开,中国开源项目已经走向世界!
- AI财经社|谷歌云为何“放弃”中国市场?有人为它算了账,投入产出比太低
- 网速|全球网速排名:中国手机网速世界第三,美国第34
- 驱动中国|国内首次应用!支付宝开放宠物鼻纹识别技术:猫狗都能买保险
- 魅族|2020年BrandZ中国全球化品牌50强新鲜出炉,魅族再上榜,位列34名
