pandas的DataFrame对象抽取“整列”或者“整行”数据

2019-02-23  本文已影响0人  马尔代夫Maldives

先给出能取行和列的几种常用方式:

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[,]两种方法取单行、多行、单列、多列、混合数据。

见另一篇博客:https://www.jianshu.com/p/f430d4f1b33f
上一篇下一篇

猜你喜欢

热点阅读