以titanic的训练数据为例进行展示,为了简化取前十行为例
首先导入模块,导入数据
import pandas as pd import numpy as npdf = pd.read_csv(r"C:\Users\admin\Desktop\train.csv")df = df.head(10)df.index=['a','b','c','d','e','f','g','h','i','g']
筛选单行
1.利用df[行索引:行索引]筛选出单行,这里的行索引可以是行索引的名称如df['a':'a'],也可以是行的行数df[0:1]
df['a':'a']df[0:1]
2.loc[行索引,列索引],索引为普通索引,传入行索引名称和列索引名称,筛选行时,列索引可以写成":"或直接省略不写
df.loc['a',:]df.loc[['a'],:]df.loc['a']df.loc[['a']]
3.iloc[行索引,列索引],索引为位置索引,传入行数和列数,筛选行时,列索引可以写成":"或直接省略不写
df.iloc[1,:]df.iloc[[1],:]df.iloc[1]df.iloc[[1]]
筛选多行
1.利用df[行索引m : 行索引n]筛选多行,这里的行索引可以是行索引的名称如df['a':'c'],也可以是行的行数df[0:4],不过只能筛选连续行
df[:3]df['a':'c']
2.loc[行索引,列索引],索引为普通索引,传入行索引名称和列索引名称,筛选行时,列索引可以写成":"或直接省略不写,如果筛选行不连续需要写成列表形式,如果行连续可以写成切片形式
df.loc[['a','c'],:]#也可以直接省略":"df.loc['a':'c',:]#也可以直接省略":"
3.iloc[行索引,列索引],索引为位置索引,传入行数和列数,筛选行时,列索引可以写成":"或直接省略不写,如果筛选行不连续需要写成列表形式,如果行连续可以写成切片形式
df.iloc[[1,3,4],:]#也可以直接省略":"df.iloc[1:4,:]#也可以直接省略":"
按条件筛选行
布尔索引df.Age>30会返回一个Series类型的布尔值,将该布尔值带入df[]中即可筛选中年龄大于30的行
df[df.Age>30]
条件比较多时,需要加入逻辑符号,&,|,~分别表示"和",“或”,"非",例如筛选出年龄大于30且Embarked为’C'的行
df[(df.Age>30) & (df.Embarked=='C')]
df.query()查询
df.query('Age > 30')
条件比较多时,需要加入逻辑符号,and, or,not分别表示"和",“或”,"非",例如筛选出年龄大于30且Embarked为’C'的行
df.query('df.Age>30'and 'df.Embarked=="C"')
df.query()如果使用变量时,需要在变量前加上@符号
value="C"df.query('Embarked==@value')