先给出能取行和列的几种常用方式:
data[ 列名 ]:取单列或多列,不能用连续方式取,也不能用于取行。
data[ i:j ]:用起始行下标(i)和终止行下标(j)取单行或者连续多行,不能用于列的选取。
data.列名:只用于取单列,不能用于行。
data.loc[行名,列名]:用对象的.loc[]方法实现各种取数据方式。
data.iloc[行下标,列下标]:用对象的.iloc[]方法实现各种取数据方式。
……待添加……
首先生成一个DataFrame对象:
import pandas as pd
score = [[34,67,87],[68,98,58],[75,73,86],[94,59,81]]
name = ['Xm','小红','小李']
course = ['语文','数学','英语','政治']
mydata = pd.DataFrame(data=score,columns=name,index=course)#指定行列名
print(mydata)
Xm 小红 小李
语文 34 67 87
数学 68 98 58
英语 75 73 86
政治 94 59 81
1、直接用列标签名抽取多列数据
语法:data[ 列名 ] √,data[ 行名 ]×
mydata['小红'] #直接选择'小红'列,注意输出是一个Series对象,而不是DataFrame对象
语文 67
数学 98
英语 73
政治 59 #Series对象
mydata[['小红']] #直接选择'小红'列,但加了[],此时输出的是DataFrame对象
小红
语文 67
数学 98
英语 73
政治 59 #DataFrame对象
mydata[['小红','小李'] #选择两列,此时必须用[]将两列括起来,否则报错
小红 小李
语文 67 87
数学 98 58
英语 73 86
政治 59 81
mydata['小红','小李'] #选择两列,没有加[],报错×××
mydata[['Xm':'小李']] #期望利用['Xm':'小李']连续选择多列,报错×××
mydata['Xm':'小李'] #期望利用'Xm':'小李'连续选择多列,报错×××
mydata['语文'] #期望通过选择‘语文’来得到语文对应的行,报错×××
小结:
(1)用数据直接加名称的方式只能获取完整的列(data[ 列名 ] √),不能企图用行名来获取一整行(data[ 行名 ] ×)。
(2)用data[ 列名 ] 方式只能明确指定待选取的列名,不能用连续取值方式。
2、用行所在矩阵索引抽取一个行或者连续多行数据
语法:data[ 行索引 ]√,data[ 列索引 ]×
mydata[0:1] #通过0:1选择了第0行
Xm 小红 小李
语文 34 67 87
mydata[0:3] #通过0:3选择了第0,1,2三行
Xm 小红 小李
语文 34 67 87
数学 68 98 58
英语 75 73 86
mydata[0] #想通过只用0一个参数得到第0行,报错×××
小节:
(1)用数据直接加矩阵索引的方式只能获取完整的行(data[ 行索引 ]√),不能企图用列索引来获取一整列(data[ 列索引 ]×)。
(2)用data[ 列索引 ] 的方式只能取得单行,或者连续多行,而没法跳跃式指定抽取。
3、用数据的“·”方式获取某一列数据
语法:data.列名√,data.行名×。
mydata.小红 #通过.小红选择了小红列,注意输出的是Series对象
语文 67
数学 98
英语 73
政治 59
mydata.语文 #企图用同样的方式输出语文这一行,报错×××
小结:
通过“data.列名”的方式只能取单独一列,无法连续取,用同样的方式取单独一行。
4、通过对象的.lco[,]和.iloc[,]两种方法取单行、多行、单列、多列、混合数据。