Pandas-13.索引
索引运算符[]
和属性运算符.
可用的。
另外支持三种多轴索引: .ix()已废弃
索引运算符
对象 | 索引 | 描述 |
---|---|---|
Series | s[index] | 标量值 |
DataFrame | df[row_index, column_index] | 标量对象 |
Panel | p[item_index, major_index, minor_index] | p.loc[item_index,major_index, minor_index] |
读取第A
列:
df["A"]
'''
a 0.719258
b -0.208437
c 0.342373
d 0.611385
e 1.047590
f -1.320031
g -1.058925
h 0.612909
Name: A, dtype: float64
'''
读取A列和B列:
代码语言:javascript复制df[["A","B"]]
'''
A B
a 0.719258 0.112746
b -0.208437 -0.101491
c 0.342373 0.645278
d 0.611385 0.356161
e 1.047590 1.335831
f -1.320031 0.389550
g -1.058925 2.609217
h 0.612909 1.211782
'''
读取第1行到第2行:
代码语言:javascript复制df[1:3]
'''
A B C D
b -0.208437 -0.101491 -0.209050 0.778529
c 0.342373 0.645278 -1.393827 -0.333414
'''
属性访问
读取A列:
代码语言:javascript复制df.A
'''
a 0.719258
b -0.208437
c 0.342373
d 0.611385
e 1.047590
f -1.320031
g -1.058925
h 0.612909
Name: A, dtype: float64
'''
.loc()
- 读取标签索引
- 有多种访问方式:
- 单个标签变量
- 标签列表
- 切片对象
- 布尔数组
- 需要两个单/列表/范围运算符,用
,
分隔,第一个表示行,第二个表示列
以如下代码作为例子:
代码语言:javascript复制df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
'''
A B C D
a 0.719258 0.112746 -0.263007 -1.076173
b -0.208437 -0.101491 -0.209050 0.778529
c 0.342373 0.645278 -1.393827 -0.333414
d 0.611385 0.356161 -0.763404 0.716249
e 1.047590 1.335831 1.321423 0.782312
f -1.320031 0.389550 0.706397 -0.603735
g -1.058925 2.609217 1.963623 1.538507
h 0.612909 1.211782 0.750815 -0.950348
'''
读取A列:
代码语言:javascript复制df.loc[:, "A"]
'''
a 0.719258
b -0.208437
c 0.342373
d 0.611385
e 1.047590
f -1.320031
g -1.058925
h 0.612909
Name: A, dtype: float64
'''
读取A列和C列:
代码语言:javascript复制df.loc[:, ["A","C"]]
'''
A C
a 0.719258 -0.263007
b -0.208437 -0.209050
c 0.342373 -1.393827
d 0.611385 -0.763404
e 1.047590 1.321423
f -1.320031 0.706397
g -1.058925 1.963623
h 0.612909 0.750815
'''
读取a行到c行:
代码语言:javascript复制print (df.loc['a':'c'])
'''
A B C D
a 0.719258 0.112746 -0.263007 -1.076173
b -0.208437 -0.101491 -0.209050 0.778529
c 0.342373 0.645278 -1.393827 -0.333414
'''
返回a行是否大于0:
代码语言:javascript复制print (df.loc['a']>0)
'''
A True
B True
C False
D False
Name: a, dtype: bool
'''
.iloc()
- 读取数字索引
- 第一个位置索引是0
- 有以下访问方式:
- 整数
- 整数列表(左闭右开)
- Series值
读取前四行:
代码语言:javascript复制print (df.iloc[:4])
'''
A B C D
a 0.719258 0.112746 -0.263007 -1.076173
b -0.208437 -0.101491 -0.209050 0.778529
c 0.342373 0.645278 -1.393827 -0.333414
d 0.611385 0.356161 -0.763404 0.716249
'''
读取第2到第4行,第3到第4列:
代码语言:javascript复制print (df.iloc[1:5, 2:4])
'''
C D
b -0.209050 0.778529
c -1.393827 -0.333414
d -0.763404 0.716249
e 1.321423 0.782312
'''
读取第2到第3列:
代码语言:javascript复制print (df.iloc[:, 1:3])
'''
C D
a -0.263007 -1.076173
b -0.209050 0.778529
c -1.393827 -0.333414
d -0.763404 0.716249
e 1.321423 0.782312
f 0.706397 -0.603735
g 1.963623 1.538507
h 0.750815 -0.950348
'''