我是靠谱客的博主 瘦瘦铅笔,这篇文章主要介绍Pandas的Series的Slice切片(4)4. Pandas的Series的Slice,现在分享给大家,希望可以做个参考。

4. Pandas的Series的Slice

Slice切片,pandas的Series的切片,以位置信息去使用切片,和python里的切片的意义是一样的即含起点不含终点half-open。但Series还支持一种label的方式定位每个元素,常用字符串做index,所以在label上使用切片和python不一样的地方是即含起点又含终点。如果用整形位置信息作为label,会产生歧义,建议不这样用。总之,整形做位置信息切片,字符串做label切片。有关切片的使用,之前的章节已经说过了,这里不重复了。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import pandas as pd import numpy as np val = [2, 4, 5, 6] ii = range(10, 14) s0 = pd.Series(val) s1 = pd.Series(val, index = ii) idx = "hello the cruel world".split() t = pd.Series(val, index = idx) print "s0", "*" * 11 print s0[0:2] print "s1", "*" * 11 print s1[ii[0:2]],"n" print s1[10:12],"n" print s1[0:2] print s1[20:30] print s1[13] print "t", "*" * 12 print t[0:2] print t["hello":"cruel"] print "-" * 14 print s0.iloc[0:2],'n' print s1.loc[10:12],'n' print s1.iloc[10:12],'n' print t.loc["hello":"cruel"],'n' print t.ix[0:2]

对于s1的打印语句

复制代码
1
2
3
4
5
print s1[ii[0:2]],"n" print s1[10:12],"n" print s1[0:2] print s1[20:30]

四条语句,那些是切片?s1[0:2]s1[20:30]很明显是切片。s1[10:12]为何没有结果?原因s1里10~12位置上没有数据,故切出来的是空,同s1[20:30]一样的道理。s1[ii[0:2]]则是多index。可以从下面的例子理解s1的各种“切片”的结果为何如此?

复制代码
1
2
3
4
5
6
7
8
import pandas as pd idx = range(10, 30) val = range(1, 21) s = pd.Series(val, index = idx) print s print s[0:2],"n" print s[10:12]

程序的执行结果:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
10 1 11 2 ... 19 10 20 11 21 12 22 13 ... 29 20 dtype: int64 10 1 11 2 dtype: int64 20 11 21 12 dtype: int64

在Pandas里使用切片最标准的定义Series和使用是t变量这种创建Series的方式和使用index、slice的方式。即用字符串做label(显式),用整形做位置信息(隐式),但显式切片和隐式切片的结果不同,显示含终点,隐式不含终点。

复制代码
1
2
3
print t[0:2] print t["hello":"cruel"]

语句执行结果不同,尽管label标签cruel的位置为2。

最后

以上就是瘦瘦铅笔最近收集整理的关于Pandas的Series的Slice切片(4)4. Pandas的Series的Slice的全部内容,更多相关Pandas的Series的Slice切片(4)4.内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部