pandas的iloc、loc、ix的使用(列切片及行切片)

loc:通過選取行(列)標籤索引數據 
iloc:通過選取行(列)位置編號索引數據 
ix:既可以通過行(列)標籤索引數據,也可以通過行(列)位置編號索引數據


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]]
二、選取標籤爲A和C的列並且只取前兩行,選完類型還是dataframe
df = df.loc[0:2, ['A', 'C']] 
df = df.iloc[0:2, [0, 2]] 
三、選取行,選完類型還是dataframe
df = df.loc[0:2,:]  選取0-2行,[0,2]閉區間
df = df.iloc[0:2,:] 選取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']],這會產生錯誤結果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章