python pandas中的索引,选择和过滤

Series

根据位置或者index索引

其中位置和index既可以是单独的一个值,也可以是一个数组。

s1 = pd.Series(np.arange(6), index=list('abcdef'))
s1
>>> a    0
b    1
c    2
d    3
e    4
f    5

# 根据位置索引
s1[[0, 2, 4]] # 等同于s1.iloc[[0, 2, 4]]
>>> a    0
c    2
e    4

# 根据index索引
s1[['a', 'c', 'e']] # 等同于s1.loc[['a', 'c', 'e']]

切片索引

除了位置和index,还可以用切片索引。
需要注意的是,切片索引也分为位置切片和index切片。位置切片不包括尾部,而index切片包含。

  • 先给大家看一个不容易混淆的例子:
s1 = pd.Series(np.arange(6), index=list('abcdef'))
s1
a    0
b    1
c    2
d    3
e    4
f    5

# index切片,包含尾部
s1['a':'c']
>>> a    0
b    1
c    2

# 位置切片,不包含尾部
s1[0:2]
>>> a    0
b    1
  • 再给大家看一个容易混淆的例子。
    当index的值和位置的值相同时,一定要区分清楚你用的是index还是位置.
s1 = pd.Series(np.arange(6))
s1
>>> 0    0
1    1
2    2
3    3
4    4
5    5

# 当index的值和位置的值相同时,默认位置切片,不包含尾部
s1[0:2]
>>> 0    0
1    1

# index切片,包含尾部
s1.loc[0:2]
>>> 0    0
1    1
2    2

# 位置切片,不包含尾部
s1.iloc[0:2]
>>> 0    0
1    1
2    2

DataFrame

单个值或者数组索引列

df1 = pd.DataFrame(np.arange(12).reshape(4,3), index=list('abcd'), columns=['c1','c2','c3'])
df1
>>>c1	c2	c3
a	0	1	2
b	3	4	5
c	6	7	8
d	9	10	11

df1['c1']
>>> a    0
b    3
c    6
d    9

df1[['c1', 'c2']]
>>> c1	c2
a	0	1
b	3	4
c	6	7
d	9	10

特殊情况下索引行

df1 = pd.DataFrame(np.arange(12).reshape(4,3), index=list('abcd'), columns=['c1','c2','c3'])
df1
>>>c1	c2	c3
a	0	1	2
b	3	4	5
c	6	7	8
d	9	10	11
  • 布尔值数组
df1[[True, False, False, True]]
>>> c1	c2	c3
a	0	1	2
d	9	10	11

df1[df1['c2']>6]
>>> c1	c2	c3
c	6	7	8
d	9	10	11
  • 切片
 df1[:2]
 >>> c1	c2	c3
a	0	1	2
b	3	4	5

df1[::2]
>>> c1	c2	c3
a	0	1	2
c	6	7	8

iloc和loc

iloc(用于整数)和loc(用于标签)常规使用含义比较明确,这里就不赘述了。和Series一样,需要注意的是,iloc中切片不包括尾部,而index中切片包含。

df1 = pd.DataFrame(np.arange(12).reshape(4,3), index=list('abcd'), columns=['c1','c2','c3'])
df1
>>>c1	c2	c3
a	0	1	2
b	3	4	5
c	6	7	8
d	9	10	11

# iloc中切片不包含尾部
df1.iloc[0:2]
>>> c1	c2	c3
a	0	1	2
b	3	4	5

# loc中切片包含尾部
df1.loc['a':'c']
>>> c1	c2	c3
a	0	1	2
b	3	4	5
c	6	7	8
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值