先手工生出一個數據框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, 固然上面全部的取數方法都是這個規則。時間