• pandas DataFrame 数据筛选(2)


    导入numpy库,创建DataFrame 数据来做演示。

    import numpy as np
    data = pd.DataFrame(np.arange(16).reshape(4, 4), index=list('abcd'), columns=list('ABCD'))
    print(data)
    
    • 1
    • 2
    • 3

    输出 一个4行,4列的示例数据,行索引为index列表,列索为 columns 。

        A B C D
    
    a  0  1  2  3
    
    b  4  5  6  7
    
    c  8  9  10  11
    
    d  12  13  14  15
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1. 依据行索引名称取某一行的值 , 使用 lco[行索引名称]

    print(data.loc['b']) # 第2行数据, 每列都包含
    
    • 1

    2. 依据索引号取行数据, ilco[行索引号]

    print(data.iloc[1]) # 也是第2行数据
    
    • 1

    都是输出:

    A    4
    B    5
    C    6
    D    7
    
    Name: b, dtype: int32
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3. 利用loc、iloc提取列数据

    print(data.loc[:, ['A']]) # 所有行, A 列
    
    • 1

    行索引 前后都不填写, :(一个冒号),取所有行数据。后面所以只有列索引A, 所以提取A列数据

    输出:

       A
    a  0
    b  4
    c  8
    d  12
    
    • 1
    • 2
    • 3
    • 4
    • 5

    **4. 提取取多列数据
    **

    print(data.loc[:, ['A', 'B']])  # 所有行, A ,B 列
    
    • 1

    **输出
    **

       A  B
    
    a  0  1
    
    b  4  5
    
    c  8  9
    
    d  12  13
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    **也可以使用索引号的值,取多列数据:
    **

    print(data.iloc[:, [0, 3]])
    
    • 1

    所有行数据,取第1列和第4列数据。

    输出

       A  D
    a  0  3
    b  4  7
    c  8  11
    d  12  15
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5. 提取指定区域的数据

    print(data.loc[['a', 'c'], ['A', 'B']])
    
    • 1

    在列表中指定行,列。如a ,c 行,A,B列数据。

    输出:

      A  B
    a  0  1
    c  8  9
    
    • 1
    • 2
    • 3

    也可以按照索引号值取某些行,某些列的值,

    print(data.iloc[[0, 1], [0, 2]]) # 第1, 2行 ,第1列与第3列数据
    
    • 1

    输出:

      A  C
    a  0  2
    b  4  6
    
    • 1
    • 2
    • 3

    6. 提取所有数据

    print(data.loc[:])
    
    • 1

    或者

    print(data.iloc[:])
    
    • 1

    7. 根据条件取数据行

    print(data.loc[data['A'] == 0]) # 筛选A列中数字为0 所在行的数据
    
    • 1

    A 列包含数据0 的行

    输出

        A  B  C  D
    a  0  1  2  3
    
    • 1
    • 2

    同理

    print(data.loc[data['B'] == 5]) # 筛选B列中数字为5 所在行的数据
    
    • 1

    A包含数据5的行

       A  B  C  D
    b  4  5  6  7
    
    • 1
    • 2

    8.多条件筛选

    print(data.loc[(data['A'] == 0) & (data['C'] == 2)])
    
    • 1

    A列包含0 且 C列包含2 的数据行

    输出:

       A  B  C  D
    a  0  1  2  3
    
    • 1
    • 2
  • 相关阅读:
    pytorch 1.13.0 windows GPU torch 离线安装
    excel中超级表和普通表的相互转换
    服务器内存一般多大?(服务器内存够用吗)
    linux进程大杂烩==Linux应用编程4
    Linux之V4L2驱动框架
    Nginx盗链和防盗链
    1093: 分香蕉
    计算机毕业设计Java小型超市商品信息管理(系统+源码+mysql数据库+lw文档)
    常见设计模式之Java实现
    微服务架构介绍
  • 原文地址:https://blog.csdn.net/flysh05/article/details/126185985