先手工生出一个数据框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, 固然上面全部的取数方法都是这个规则。时间