使用python的工具包pandas,可以方便的处理数据。但是发现一个问题:有时候总是不知道怎么选取数据。因此在这里记录一下。由于在实际使用中,主要用到的就是DataFrame的结构,因此,这里主要说DataFrame数据结构中,数据的选取方法。
假设我们已经有了DataFrame数据,呈现如下结构:
index | pop | state | year |
---|---|---|---|
0 | 1.5 | Ohio | 2000 |
1 | 1.7 | Ohio | 2001 |
2 | 3.6 | Ohio | 2002 |
3 | 2.4 | Nevada | 2001 |
data = {'state':['Ohio', 'Ohio', 'Ohio', 'Neveda'],'year':[2000, 2001, 2002, 2001],'pop':[1.5,1.7, 3.6, 2.4]}
frame = pd.DataFrame(data, index=['2','3','4','5'])
print frame
一)行的选择
首先我们说针对行的选取,分为:单行选取,切片选取,选择选取,这些选取都可以分为使用索引index来选取,以及通过第n行的行值来选取。而这些选取都可以使用ix这个功能来实现。
1、选其中一行:
1)使用index: frame.ix[‘3’]
2) 使用行值:frame.ix[1]
2、切片选取:
1)使用index:frame.ix[‘3’:’5’]
2)使用行值:frame.ix[0:2]
3、选择选取:
1)使用index:frame.ix[[‘3’,’5’]]
2)使用行值:frame.ix[[0,2]]
二)列的选择
列的选取也可以对应行的选取的方式,分为:单行选取,切片选取,选择选取。列的选择直接使用frame这个DataFrame来选择就好,但是有些方式是不支持的。
1、选择其中一列
1)使用index:frame[‘pop’]
2)使用列值:frame[[1]]
2、切片选取
1)使用index:对于DataFrame来说,对应行的index选取方式,应该是frame[‘pop’:’year’]。但是实际上这个是不支持的,不知道为什么。后面讲另外的列切片选取方法。
2)使用列值:对应行的值选取方法,应该是frame[0:2],但实际上,这个选择的仍然是行~。这个点需要注意。
3、选择选取
1)使用index:frame[[‘pop’,’year’]]
2)使用列值:frame[[0,2]]
三)行列的综合选择
行列的综合选择需要使用ix的方法,即frame.ix[:, :]
即逗号前后的行、列都可以使用一、二本来自己就支持的方法,来选择所需要的值。
除了原先的功能之外,使用该方法,列可以使用切片的方式来选择数据:
1)使用index来选择列:
frame.ix[:, ‘pop’:’year’]
2)使用列值来选择:
frame.ix[:,0:2]
另外还需要注意的是:
使用index切片来选取时,是头尾都包含的,即使用index:frame.ix[‘3’:’5’]中’3’到’5’的行都会包含;但是使用行值,frame.ix[0:2],则只会包含0,1两行。
列是同样的道理。