沧海拾珠

Pandas 筛选数据

1. 对Series中数据进行筛选操作

1
2
3
4
5
6
7
import numpy as np
from pandas import Series, DataFrame
series_obj = Series(np.arange(8),index = ['row 1', 'row 2','row 3','row 4','row 5', 'row 6', 'row 7', 'row 8'])
#选择单行数据
series_obj['row6']
5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#选择多行数据
series_obj[[0,7]]
row 1 0
row 8 7
#切片
series_obj['row 3':'row 7']
row 3 2
row 4 3
row 5 4
row 6 5
row 7 6
#条件筛选
series_obj[series_obj > 6]
row 8 7
#对数据进行更新或设置
series_obj['row 1', 'row 5', 'row 8'] = 8

2. 对dataFrame中数据进行操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#新建一个随机dataFrame
np.random.seed(30) #保证产生的随机数都是相同的
DF_obj = DataFrame(np.random.rand(25).reshape((5,5)),
index = ['row 1', 'row 2', 'row 3', 'row 4', 'row 5'],
columns = ['column 1', 'column 2', 'column 3', 'column 4', 'column 5'])
#使用行index和列column信息获取数据
DF_obj.loc[['row 1', 'row 3'],['column 2', 'column 5']]
column 2 column 5
row 1 0.380748 0.962608
row 3 0.544136 0.933850
#使用行和列位置信息获取数据
DF_obj.iloc[[2, 4],[1, 4]]
column 2 column 5
row 3 0.544136 0.933850
row 5 0.734953 0.902514
#筛选或判断数据
DF_obj>.3
column 1 column 2 column 3 column 4 column 5
row 1 True True True False True
row 2 True True False True True
row 3 False True True True True
row 4 False False True False False
row 5 True True True False True