### 随机生DataFrame 类型数据
import pandas as pd
import numpy as np
frame = pd.DataFrame(np.random.rand(4,4),index=list('abcd'),columns=list('ABCD'))
frame
| | A | B | C | D |
|---|
| a | 0.560094 | 0.352686 | 0.954100 | 0.926277 |
|---|
| b | 0.563728 | 0.335517 | 0.232902 | 0.973932 |
|---|
| c | 0.482155 | 0.976618 | 0.565462 | 0.445108 |
|---|
| d | 0.477146 | 0.933353 | 0.291764 | 0.986668 |
|---|
1、loc 基于行标签和列标签(x_label、y_label)进行索引
### .loc先行后列,中间用逗号(,)分割,例如取 a 和 A 对应的数据
frame.loc['a','A']
0.56009394013943303
### 取前两行对应数据
frame.loc['a':'b',:]
| | A | B | C | D |
|---|
| a | 0.560094 | 0.352686 | 0.954100 | 0.926277 |
|---|
| b | 0.563728 | 0.335517 | 0.232902 | 0.973932 |
|---|
### 取前两列对应数据
frame.loc[:,'A':'B']
| | A | B |
|---|
| a | 0.560094 | 0.352686 |
|---|
| b | 0.563728 | 0.335517 |
|---|
| c | 0.482155 | 0.976618 |
|---|
| d | 0.477146 | 0.933353 |
|---|
### 取前两行和前两列对应数据
frame.loc['a':'b','A':'B']
| | A | B |
|---|
| a | 0.560094 | 0.352686 |
|---|
| b | 0.563728 | 0.335517 |
|---|
### 上面的例子取的都是连续的行和列,若取第一行和第四行、第一列和第四列对应的数据,则
frame.loc[['a','d'],['A','D']]上面的例子取的都是连续的行和列,若取第一行和第四行、第一列和第四列对应的数据,则
frame.loc[['a','d'],['A','D']]
| | A | D |
|---|
| a | 0.560094 | 0.926277 |
|---|
| d | 0.477146 | 0.986668 |
|---|
2、 iloc 基于行索引和列索引(index,columns) 都是从 0 开始
如果数据的行标签和列标签名字太长或不容易记,则用 iloc 很方便,只需记标签对应的索引即可
### .loc先行后列,中间用逗号(,)分割,例如取 a 和 A 对应的数据
frame.iloc[0,0]
0.56009394013943303
### 取前两行对应数据
frame.iloc[0:2,:]
| | A | B | C | D |
|---|
| a | 0.560094 | 0.352686 | 0.954100 | 0.926277 |
|---|
| b | 0.563728 | 0.335517 | 0.232902 | 0.973932 |
|---|
### 取前两列对应数据
frame.iloc[:,0:2]
| A | B |
|---|
| a | 0.560094 | 0.352686 |
|---|
| b | 0.563728 | 0.335517 |
|---|
| c | 0.482155 | 0.976618 |
|---|
| d | 0.477146 | 0.933353 |
|---|
### 取前两行和前两列对应数据
frame.iloc[0:2,0:2]
| | A | B |
|---|
| a | 0.560094 | 0.352686 |
|---|
| b | 0.563728 | 0.335517 |
|---|
### 上面的例子取的都是连续的行和列,若取第一行和第四行、第一列和第四列对应的数据,则
frame.iloc[[0,3],[0,3]]上面的例子取的都是连续的行和列,若取第一行和第四行、第一列和第四列对应的数据,则
frame.iloc[[0,3],[0,3]]
| | A | D |
|---|
| a | 0.560094 | 0.926277 |
|---|
| d | 0.477146 | 0.986668 |
|---|
3、 ix 基于标签或者索引(loc和iloc 的混合)
### 取前两行和前两列对应数据
frame.iloc[0:2,0:2]
| | A | B |
|---|
| a | 0.560094 | 0.352686 |
|---|
| b | 0.563728 | 0.335517 |
|---|
### 取前两行和前两列对应数据
frame.ix['a':'b','A':'B']
| | A | B |
|---|
| a | 0.560094 | 0.352686 |
|---|
| b | 0.563728 | 0.335517 |
|---|
官方文档新的python版本已经弃用 ix,建议使用 loc 和 iloc
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing