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, 固然上面全部的取數方法都是這個規則。時間

相關文章
相關標籤/搜索