美文网首页
pandas的DataFrame对象抽取“整列”或者“整行”数据

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

作者: 马尔代夫Maldives | 来源:发表于2019-02-23 22:43 被阅读0次

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

    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

    相关文章

      网友评论

          本文标题:pandas的DataFrame对象抽取“整列”或者“整行”数据

          本文链接:https://www.haomeiwen.com/subject/krrmyqtx.html