先給出能取行和列的幾種常用方式:
data[ 列名 ]:取單列或多列,不能用連續(xù)方式取箱靴,也不能用于取行给涕。
data[ i:j ]:用起始行下標(biāo)(i)和終止行下標(biāo)(j)取單行或者連續(xù)多行香嗓,不能用于列的選取垛叨。
data.列名:只用于取單列伦糯,不能用于行。
data.loc[行名,列名]:用對象的.loc[]方法實現(xiàn)各種取數(shù)據(jù)方式嗽元。
data.iloc[行下標(biāo),列下標(biāo)]:用對象的.iloc[]方法實現(xiàn)各種取數(shù)據(jù)方式敛纲。
……待添加……
首先生成一個DataFrame對象:
import pandas as pd
score = [[34,67,87],[68,98,58],[75,73,86],[94,59,81]]
name = ['Xm','小紅','小李']
course = ['語文','數(shù)學(xué)','英語','政治']
mydata = pd.DataFrame(data=score,columns=name,index=course)#指定行列名
print(mydata)
Xm 小紅 小李
語文 34 67 87
數(shù)學(xué) 68 98 58
英語 75 73 86
政治 94 59 81
1、直接用列標(biāo)簽名抽取多列數(shù)據(jù)
語法:data[ 列名 ] √剂癌,data[ 行名 ]×
mydata['小紅'] #直接選擇'小紅'列淤翔,注意輸出是一個Series對象,而不是DataFrame對象
語文 67
數(shù)學(xué) 98
英語 73
政治 59 #Series對象
mydata[['小紅']] #直接選擇'小紅'列佩谷,但加了[]旁壮,此時輸出的是DataFrame對象
小紅
語文 67
數(shù)學(xué) 98
英語 73
政治 59 #DataFrame對象
mydata[['小紅','小李'] #選擇兩列监嗜,此時必須用[]將兩列括起來,否則報錯
小紅 小李
語文 67 87
數(shù)學(xué) 98 58
英語 73 86
政治 59 81
mydata['小紅','小李'] #選擇兩列抡谐,沒有加[]裁奇,報錯×××
mydata[['Xm':'小李']] #期望利用['Xm':'小李']連續(xù)選擇多列,報錯×××
mydata['Xm':'小李'] #期望利用'Xm':'小李'連續(xù)選擇多列童叠,報錯×××
mydata['語文'] #期望通過選擇‘語文’來得到語文對應(yīng)的行框喳,報錯×××
小結(jié):
(1)用數(shù)據(jù)直接加名稱的方式只能獲取完整的列(data[ 列名 ] √)课幕,不能企圖用行名來獲取一整行(data[ 行名 ] ×)厦坛。
(2)用data[ 列名 ] 方式只能明確指定待選取的列名,不能用連續(xù)取值方式乍惊。
2杜秸、用行所在矩陣索引抽取一個行或者連續(xù)多行數(shù)據(jù)
語法:data[ 行索引 ]√,data[ 列索引 ]×
mydata[0:1] #通過0:1選擇了第0行
Xm 小紅 小李
語文 34 67 87
mydata[0:3] #通過0:3選擇了第0,1,2三行
Xm 小紅 小李
語文 34 67 87
數(shù)學(xué) 68 98 58
英語 75 73 86
mydata[0] #想通過只用0一個參數(shù)得到第0行润绎,報錯×××
小節(jié):
(1)用數(shù)據(jù)直接加矩陣索引的方式只能獲取完整的行(data[ 行索引 ]√)撬碟,不能企圖用列索引來獲取一整列(data[ 列索引 ]×)。
(2)用data[ 列索引 ] 的方式只能取得單行莉撇,或者連續(xù)多行呢蛤,而沒法跳躍式指定抽取。
3棍郎、用數(shù)據(jù)的“·”方式獲取某一列數(shù)據(jù)
語法:data.列名√其障,data.行名×。
mydata.小紅 #通過.小紅選擇了小紅列涂佃,注意輸出的是Series對象
語文 67
數(shù)學(xué) 98
英語 73
政治 59
mydata.語文 #企圖用同樣的方式輸出語文這一行励翼,報錯×××
小結(jié):
通過“data.列名”的方式只能取單獨一列,無法連續(xù)取辜荠,用同樣的方式取單獨一行汽抚。