• pandas dataframe 筛选数据


    Pandas DataFrame 是一个表格,我们可以对DataFrame的列数据或者行数据进行筛选

    选取 DataFrame 的列

    选取单列

    column = df["column_name"]
    
    column = df.loc[:,"column_name"]
    
    column = df.loc[:,["column_name"]]
    
    column = df.iloc[:,column_index]
    
    column = df.iloc[:,[column_index]]
    

    选取多列

    columns = df[["column1","column2"]]
    
    columns = df.loc[:,["column1","column2"]]
    
    columns = df.iloc[:,[column_start_index:column_end_index]]
    
    

    选取 DataFrame 的行

    选取单行数据

    # 用切片的方式选取第1行数据
    row = df[0:1]
    
    row = df.loc["row_name",:]
    
    row = df.loc[["row_name"],:]
    
    row = df.iloc[row_index,:]
    
    row = df.iloc[[row_index],:]
    
    

    选取多行数据

    row = df[row_start_index:row_end_index]
    
    row = df.loc["row_name1":"row_name2",:]
    
    row = df.loc[["row_name1","row_name2"],:]
    
    row = df.iloc[row_start_index:row_end_index,:]
    
    row = df.iloc[[row_start_index,row_end_index],:]
    

    loc 方法

    基于行标签和列标签(x_label、y_label)进行索引

    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.rand(4,4),index=list('abcd'),columns=list('ABCD'))
    
    A B C D
    a 0.437566 0.297916 0.112590 0.344499
    b 0.452666 0.877309 0.558246 0.293236
    c 0.871981 0.405403 0.985072 0.095807
    d 0.437388 0.091123 0.247424 0.478886

    选取所有行,所有列

    .loc[x,y] 第一个参数是行名 : 代表所有行,第二个参数是列名 : 可以代表所有列

    print(df.loc[:,:])
              A         B         C         D
    a  0.270384  0.177939  0.922407  0.582625
    b  0.505246  0.726506  0.915992  0.447659
    c  0.545251  0.684161  0.227306  0.781615
    d  0.706013  0.630996  0.878100  0.495289
    

    选择指定行

    选取 index 为 a 的行

    print(df.loc['a',:])
    
    A    0.270384
    B    0.177939
    C    0.922407
    D    0.582625
    Name: a, dtype: float64
    
    print(df.loc[['a'],:])
              A         B         C         D
    a  0.270384  0.177939  0.922407  0.582625
    

    选取 index ac 的行

    print(df.loc['a':'c',:])
              A         B         C         D
    a  0.270384  0.177939  0.922407  0.582625
    b  0.505246  0.726506  0.915992  0.447659
    c  0.545251  0.684161  0.227306  0.781615
    

    选取 index 为 ac 的行

    print(df.loc[['a','c'],:])
              A         B         C         D
    a  0.270384  0.177939  0.922407  0.582625
    c  0.545251  0.684161  0.227306  0.781615
    

    选取指定列

    选取列名为 A 的列

    print(df.loc[:,'A'])
    a    0.270384
    b    0.505246
    c    0.545251
    d    0.706013
    Name: A, dtype: float64
    

    选取列名AC 的列

    print(df.loc[:,'A':'C'])
              A         B         C
    a  0.270384  0.177939  0.922407
    b  0.505246  0.726506  0.915992
    c  0.545251  0.684161  0.227306
    d  0.706013  0.630996  0.878100
    

    选取列名为 A 和列名为 C 的列

    print(df.loc[:,['A','C']])
              A         C
    a  0.270384  0.922407
    b  0.505246  0.915992
    c  0.545251  0.227306
    d  0.706013  0.878100
    

    iloc 方法

    基于行索引和列索引(index,columns)都是从 0 开始,使用iloc方法你不必知道行索引名称和列名,只需要传入行或列的位置参数即可

    选择所有行和列

    print(df.iloc[:,:])
              A         B         C         D
    a  0.270384  0.177939  0.922407  0.582625
    b  0.505246  0.726506  0.915992  0.447659
    c  0.545251  0.684161  0.227306  0.781615
    d  0.706013  0.630996  0.878100  0.495289
    

    选取指定行

    选取第一行数据

    print(df.iloc[0,:])
    A    0.270384
    B    0.177939
    C    0.922407
    D    0.582625
    Name: a, dtype: float64
    

    选取前3行数据

    print(df.iloc[0:3,:])
              A         B         C         D
    a  0.270384  0.177939  0.922407  0.582625
    b  0.505246  0.726506  0.915992  0.447659
    c  0.545251  0.684161  0.227306  0.781615
    

    选取第一行和最后一行的数据

    print(df.iloc[[0,-1],:])
              A         B         C         D
    a  0.270384  0.177939  0.922407  0.582625
    d  0.706013  0.630996  0.878100  0.495289
    

    选取指定列

    选取第一列数据

    print(df.iloc[:,0])
    a    0.270384
    b    0.505246
    c    0.545251
    d    0.706013
    Name: A, dtype: float64
    

    选取前三列数据

    print(df.iloc[:,0:3])
              A         B         C
    a  0.270384  0.177939  0.922407
    b  0.505246  0.726506  0.915992
    c  0.545251  0.684161  0.227306
    d  0.706013  0.630996  0.878100
    

    选取第一列和最后一列数据

    print(df.iloc[:,[0,-1]])
              A         D
    a  0.270384  0.582625
    b  0.505246  0.447659
    c  0.545251  0.781615
    d  0.706013  0.495289
    

    ix

    基于标签或者索引(loc和iloc 的混合)

    官方文档新的python版本已经弃用 ix,建议使用 loc 和 iloc

    .ix is deprecated. Please use
    .loc for label based indexing or
    .iloc for positional indexing

  • 相关阅读:
    SWOT分析模型
    如果度过迷茫,是多些挫折还是少一些好呢?
    Ext.Net动态构建树TreePanel使用详解
    Ext.Net动态加载菜单执行事件
    通过教练提升领导力了解行为教练在何时无法发挥作用
    Ext.Net\ExtJs弹出消息Alert、MessageBox、Confirm使用详解
    把领导力转化为结果结果导向型领导力
    自由职业,我的半年总结
    关于自由职业的一些想法(采访整理)
    Ext.net文本输入框:Ext.form.TextField属性汇总
  • 原文地址:https://www.cnblogs.com/Jaryer/p/15151425.html
Copyright © 2020-2023  润新知