1. 程式人生 > >python選取特定列——pandas的iloc和loc以及icol使用(列切片及行切片)

python選取特定列——pandas的iloc和loc以及icol使用(列切片及行切片)

df是一個dataframe,列名為A B C D
具體值如下:
A    B    C     D
0    ss   小紅  8
1    aa   小明  d
4    f          f
6    ak   小紫  7 
dataframe裡的屬性是不定的,空值預設為NA。
一、選取標籤為A和C的列,並且選完型別還是dataframe
df = df.loc[:, ['A', 'C']]
df = df.iloc[:, [0, 2]]
二、選取標籤為C並且只取前兩行,選完型別還是dataframe
df = df.loc[0:2, ['A', 'C']]  
df = df.iloc[0:2, [0, 2]] 
聰明的朋友已經看出iloc和loc的不同了:loc是根據dataframe的具體標籤選取列,而iloc是根據標籤所在的位置,從0開始計數。
","前面的":"表示選取整列,第二個示例中的的0:2表示選取第0行到第二行,這裡的0:2相當於[0,2)前閉後開,2是不在範圍之內的。
需要注意的是,如果是df = df.loc[0:2, ['A', 'C']]或者df = df.loc[0:2, ['A', 'C']],切片之後型別依舊是dataframe,不能直接進行
加減乘除等操作的,比如dataframe的一列是數學成績(shuxue),另一列為語文成績(yuwen),現在需要求兩門課程的總和。可以使用df['shuxue'] + df['yuwen'](選取完之後型別為series)來獲得總分,而不能使用df.iloc[:,[2]]+df.iloc[:,[
1]]或df.iloc[:,['shuxue']]+df.iloc[:,['yuwen']],這會產生錯誤結果。
還有一種方式是使用df.icol(i)來選取列,選取完的也不是dataframe而是series,i為該列所在的位置,從0開始計數。
如果你想要選取某一行的資料,可以使用df.loc[[i]]或者df.iloc[[i]]。