pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix

先手工生出一个数据框code

import numpy as np  
import pandas as pd  
df = pd.DataFrame(np.arange(0,60,2).reshape(10,3),columns=list('abc'))

df 是这样子pandas

a   b   c
0   0   2   4
1   6   8  10
2  12  14  16
3  18  20  22
4  24  26  28
5  30  32  34
6  36  38  40
7  42  44  46
8  48  50  52
9  54  56  58

那么这三种选取数据的方式该怎么选择呢?import

1、当每列已有column name时,用 df [ 'a' ] 就能选取出一整列数据。若是你知道column names 和index,且二者都很好输入,能够选择 .locnumpy

>>> df.loc[0, 'a']
0
>>> df.loc[0:3, ['a', 'b']]
    a   b
0   0   2
1   6   8
2  12  14
3  18  20
>>> df.loc[[1, 5], ['b', 'c']]
    b   c
1   8  10
5  32  34

因为这边咱们没有命名index,因此是DataFrame自动赋予的,为数字0-9方法

2、若是咱们嫌column name太长了,输入不方便,有或者index是一列时间序列,更很差输入,那就能够选择 .iloc了。这边的 i 我以为表明index,比较好记点。im

>>> df.iloc[1,1]
8
>>> df.iloc[0:3,[0,1]]
    a   b
0   0   2
1   6   8
2  12  14
>>> df.iloc[[0,3,5],0:2]
    a   b
0   0   2
3  18  20
5  30  32

 

iloc 使得咱们能够对column使用slice(切片)的方法对数据进行选取。命名

3、.ix 的功能就更强大了,它容许咱们混合使用下标和名称进行选取。 能够说它涵盖了前面全部的用法。基本上把前面的都换成df.ix 都能成功,可是有一点,就是数据

df.ix [ [ ..1.. ], [..2..] ],  1框内必须统一,必须同时是下标或者名称,2框也同样。 BTW, 1框是用来指定row,2框是指定column, 固然上面全部的取数方法都是这个规则。时间

相关文章
相关标签/搜索