Pandas条件筛选


1. 原始数据

1
2
3
4
5
6
import pandas as pd
import numpy as np
data = pd.DataFrame(
np.arange(16).reshape((4,4)),
index=["北京", "上海", "西安", "成都"],
columns=["智障数量", "天才数量", "逗逼数量", "脑残数量"])

Data:

智障数量 天才数量 逗逼数量 脑残数量
北京 1 2 3 4
上海 5 6 7 8
西安 9 10 11 12
成都 13 14 15 16

2. 索引筛选

1)使用单个值或者序列,可以筛选出多列数据

1
data[["智障数量", "天才数量"]]

data:

智障数量 天才数量
北京 1 2
上海 5 6
西安 9 10
成都 13 14

2)使用切片的方式针对数据进行筛选

1
data[: 2]

data:

智障数量 天才数量 逗逼数量 脑残数量
北京 1 2 3 4
上海 5 6 7 8

3)Pandas接受bool数组进行切片筛选

1
df_bool = data[["逗逼数量"] > 5]

生成bool数组, df_bool确定需要保留的数据:

北京 FALSE
上海 TRUE
西安 TRUE
成都 TRUE

bool数据作为索引对数据进行筛选

1
data[df_bool]

data:

智障数量 天才数量 逗逼数量 脑残数量
上海 5 6 7 8
西安 9 10 11 12
成都 13 14 15 16

loc和iloc进行数据筛选

loc使用标签索引获取数据

使用loc可以类似于使用bool数据对dataframe数据进行筛选

1
data.loc[df_bool]

筛选后可以获得与data[df_bool]一样的结果

data:

智障数量 天才数量 逗逼数量 脑残数量
上海 5 6 7 8
西安 9 10 11 12
成都 13 14 15 16

loc也可以对多行列的数据进行直接筛选

1
data.loc[["北京", "上海"], ["智障数量","天才数量"]]

data:

智障数量 天才数量
北京 1 2
上海 5 6

iloc使用数据位置进行筛选

iloc也可以对多行列的数据进行直接筛选,对应loc的例子

1
data.iloc[[0, 1], [0, 1]]

data:

智障数量 天才数量
北京 1 2
上海 5 6

iloc的索引功能也可以用于切片

1
data.iloc[:, :3][data.智障数量 > 1]

data:

智障数量 天才数量 逗逼数量
上海 5 6 7
西安 9 10 11
成都 13 14 15

文章作者: 火柴人
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 火柴人 !
评论
  目录