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)使用单个值或者序列,可以筛选出多列数据
data:
|
智障数量 |
天才数量 |
北京 |
1 |
2 |
上海 |
5 |
6 |
西安 |
9 |
10 |
成都 |
13 |
14 |
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数据作为索引对数据进行筛选
data:
|
智障数量 |
天才数量 |
逗逼数量 |
脑残数量 |
上海 |
5 |
6 |
7 |
8 |
西安 |
9 |
10 |
11 |
12 |
成都 |
13 |
14 |
15 |
16 |
loc和iloc进行数据筛选
loc使用标签索引获取数据
使用loc可以类似于使用bool数据对dataframe数据进行筛选
筛选后可以获得与data[df_bool]一样的结果
data:
|
智障数量 |
天才数量 |
逗逼数量 |
脑残数量 |
上海 |
5 |
6 |
7 |
8 |
西安 |
9 |
10 |
11 |
12 |
成都 |
13 |
14 |
15 |
16 |
loc也可以对多行列的数据进行直接筛选
1
| data.loc[["北京", "上海"], ["智障数量","天才数量"]]
|
data:
iloc使用数据位置进行筛选
iloc也可以对多行列的数据进行直接筛选,对应loc的例子
1
| data.iloc[[0, 1], [0, 1]]
|
data:
iloc的索引功能也可以用于切片
1
| data.iloc[:, :3][data.智障数量 > 1]
|
data:
|
智障数量 |
天才数量 |
逗逼数量 |
上海 |
5 |
6 |
7 |
西安 |
9 |
10 |
11 |
成都 |
13 |
14 |
15 |