索引、選取和過濾
大部分的查詢用法
類型 | 說明 |
---|---|
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'])
obj
a 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: float64
obj['a':'c']=5
obj
a 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'])
data
one two three four
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
直接操作索引會報錯,用索引查必須是切片,選取行
data[0:2]
one two three four
a 0 0 0 0
b 0 5 6 7
可以用列索引的標簽名字查詢
data[['one','two','three']]
one two three
a 0 1 2
b 4 5 6
c 8 9 10
d 12 13 14
ix操作行進行查詢,ix[行,列]
data.ix[['a','b'],['two','four']]
two four
a 1 3
b 5 7
ix查詢不只顧頭也顧尾
data.ix[:'c',:'two']
one two
a 0 1
b 4 5
c 8 9
利用布爾值進行查詢
# 行大於7,的前兩列,這里邊的切片查詢依然是顧頭不顧尾
data.ix[data.three>7,:2]
one two
c 8 9
d 12 13
個人總結查詢使用Series操作索引是直接行操作,如果使用DataFrame進行索引默認都是操作列,操作行需要使用ix