Pandas-13.索引

2019-05-29 17:16:52 浏览数 (1)

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列:

代码语言: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
'''

读取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
'''

0 人点赞