
正文
Pandas基本功能之选取索引和过滤
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
索引、选取和过滤
大部分的查询用法
| 类型 | 说明 |
|---|---|
| obj[val] | 选取DataFrame的单个列或一组列 |
| obj.ix[val] | 选取DataFrame的单个行或一组行 |
| obj.ix[:,val] | 选取单个列或列子集 |
| obj.ix[val1,val2] | 同时选取行和列 |
| reindex方法 | 将一个或多个轴匹配到新索引 |
| xs方法 | 根据标签选取单行或单列,并返回一个Series |
| icol、irow方法 | 根据整数位置选取单列或单行,并返回Series |
| get_value、set_value方法 | 根据行标签和列标签选取单个值 |
示例
- Series
obj = Series(np.arange(4.),index=['a','b','c','d'])
obja 0.0
b 1.0
c 2.0
d 3.0
dtype: float64
Series索引查
obj[1]
1.0
obj[1:3]
b 1.0
c 2.0
dtype: float64
Series索引的标签查询,它和切片的区别,不只顾头还顾尾
obj['a':'c']a 0.0
b 1.0
c 2.0
dtype: float64obj['a':'c']=5
obja 5.0
b 5.0
c 5.0
d 3.0
dtype: float64
- DataFrame
操作列进行查询的方式
data = pd.DataFrame(np.arange(16).reshape(4,4),index=['a','b','c','d'],columns=['one','two','three','four'])
dataonetwothreefour
a0123
b4567
c891011
d12131415
直接操作索引会报错,用索引查必须是切片,选取行
data[0:2]onetwothreefour
a0000
b0567
可以用列索引的标签名字查询
data[['one','two','three']]onetwothree
a012
b456
c8910
d121314
ix操作行进行查询,ix[行,列]
data.ix[['a','b'],['two','four']]twofour
a13
b57
ix查询不只顾头也顾尾
data.ix[:'c',:'two']
onetwo
a01
b45
c89
利用布尔值进行查询
# 行大于7,的前两列,这里边的切片查询依然是顾头不顾尾
data.ix[data.three>7,:2]onetwo
c89
d1213
个人总结查询使用Series操作索引是直接行操作,如果使用DataFrame进行索引默认都是操作列,操作行需要使用ix




