• python pandas query用法


    Pandas 中应用 query 函数来进行数据筛选。
    query 函数的一般用法如下:
    df.query('expression')

    常用方法:

    1. #!/usr/bin/python
    2. import pandas as pd
    3. import numpy as np
    4. data = {
    5. 'brand':['Python',' C ',' C++ ','C#','Java'],
    6. 'A':[10,2,5,20,16],
    7. 'B':[4,6,8,12,10],
    8. 'C':[8,12,18,8,2],
    9. 'D':[6,18,14,6,12],
    10. 'till years':[4,1,1,30,30]
    11. }
    12. df = pd.DataFrame(data=data)
    13. print("df数据打印:\n", df, '\n')
    14. print('查找数据:\n', df.query('brand == "Python"'), '\n')
    15. print('查找数据:\n', df[df['brand'] == "Python"], '\n')

    可以使用df.query('brand == "Python"')进行查找,也可以使用df[df['brand'] == "Python"]这种方式进行查找。

    out:

    1. df数据打印:
    2. brand A B C D till years
    3. 0 Python 10 4 8 6 4
    4. 1 C 2 6 12 18 1
    5. 2 C++ 5 8 18 14 1
    6. 3 C# 20 12 8 6 30
    7. 4 Java 16 10 2 12 30
    8. 查找数据:
    9. brand A B C D till years
    10. 0 Python 10 4 8 6 4
    11. 查找数据:
    12. brand A B C D till years
    13. 0 Python 10 4 8 6 4

    通过数学表达式来筛选:

    除了直接通过等于某个值来筛选, query 函数还支持通过数学表达式来进行数据筛选,包括 > < + - * / 等。
    1. print('查找数据:\n', df.query('A > 15'), '\n')
    2. out:
    3. 查找数据:
    4. brand A B C D till years
    5. 3 C# 20 12 8 6 30
    6. 4 Java 16 10 2 12 30
    通过变量筛选:
    在程序比较长的时候,经常会使用变量来作为筛选条件, query 函数在使用变量作为判断标准时,通过在变量前面添加 @ 符号来实现,示例如下:
    1. name = 'Java'
    2. print('查找数据:\n', df.query('brand == @name'), '\n')
    3. out:
    4. 查找数据:
    5. brand A B C D till years
    6. 4 Java 16 10 2 12 30

    通过列表数据筛选:

    当需要在某列中筛选多个符合要求的值的时候,可以通过列表( list )来实现,示例如下:
    1. name = ['Python', 'Java']
    2. print('查找数据:\n', df.query('brand in @name'), '\n')
    3. out:
    4. 查找数据:
    5. brand A B C D till years
    6. 0 Python 10 4 8 6 4
    7. 4 Java 16 10 2 12 30

    多条件筛选:

    两者都需要满足的并列条件使用符号 & , 或单词 and
    只需要满足其中之一的条件使用符号 | , 或单词 or
    1. name = ['Python', 'Java']
    2. print('查找数据:\n', df.query('brand in @name & A > 15'), '\n')
    3. out:
    4. 查找数据:
    5. brand A B C D till years
    6. 4 Java 16 10 2 12 30

    列名称中有空格的情况,使用``进行处理:

    使用引号处理的话,会报错。

    1. print('查找数据:\n', df.query('`till years` > 10'), '\n')
    2. out:
    3. 查找数据:
    4. brand A B C D till years
    5. 3 C# 20 12 8 6 30
    6. 4 Java 16 10 2 12 30

    筛选后选取数据列:
    1. name = ['brand', 'A', 'B', 'till years']
    2. print('查找数据:\n', df.query('`till years` > 10')[name], '\n')
    3. out:
    4. 查找数据:
    5. brand A B till years
    6. 3 C# 20 12 30
    7. 4 Java 16 10 30

    总结:

    当用到多条件筛选时,使用query就会显得简洁的多:

    1. print(df[(df['brand'] == 'Python') & (df['A'] == 10) & (df['B'] == 4)])
    2. print(df.query('brand == "Python" & A == 10 & B == 4'))

  • 相关阅读:
    2022年11月10篇论文推荐
    使用Python实现3D曲线拟合
    前端css实现特殊日期网页变灰功能
    R语言ggplot2可视化:使用ggplot2可视化散点图、使用labs参数自定义X轴的轴标签文本(customize X axis labels)
    空间金字塔池化Spatial Pyramid Pooling
    ros学习笔记12——python实现发布和接收ros topic
    shell 查看当前日期时间
    三菱FX3U PLC倒立摆控制
    c语言实现http下载功能,显示进度条和下载速率
    Java面试题(持续更新中)
  • 原文地址:https://blog.csdn.net/xiadeliang1111/article/details/126819918