在pandas模块中实现数据框子集的获取可以使用iloc、loc和ix三种‘方法’。语法可表示[row_select,cols_select]。
- iloc只能通过行号和列号进行数据的筛选
- loc可以指定具体的行标签(或条件表达式)和列标签(字段名只能通过行号和列号进行数据的筛选)
-
ix是iloc和loc的混合,其吸收了iloc和loc的优点,使数据框子集的获取更加灵活(会报错'DataFrame' object has no attribute 'ix')
行
# 数据子集的获取
# 构造数据集
df1 = pd.DataFrame({'name':['张三','李四','王二','丁一','李五'],
'gender':['男','女','女','女','男'],
'age':[23,26,22,25,27]}, columns = ['name','gender','age'])
df1
# 取出数据集的中间三行(即所有女性),并且返回姓名和年龄两列
df1.iloc[1:4,[0,2]]
df1.loc[1:3, ['name','age']]
out:
name age
1 李四 26
2 王二 22
3 丁一 25
iloc运用索引思想,切片索引不取上限,所以要用1:4,姓名和年龄两列也必须用数值索引;
loc是指获取行或列的标签(名称),需要写入具体的变量名称;
# 使用筛选条件,取出所有男性的姓名和年龄
# df1.iloc[df1.gender == '男',]
df1.loc[df1.gender == '男',['name','age']]
out:
name age
0 张三 23
4 李五 27
基于条件的记录筛选,使用loc方法。