pandas之query

数据准备

import pandas as pd


product_info = {
    "订单号": ["2951110000099262111", "2181910000909928191", "2194560000121355545", "1194560000121311126", "1483160000121315483"],
    "数量": [92, 61, 66, 33, 15],
    "价格(USD)": [230, 122, 150, 190, 200],
    "状态": ['Not Delivered', 'Not Delivered', 'Not Delivered', 'Not Shipped', 'Not Delivered'],
    '订单日期': ['2022-02-12', '2022-03-02', '2022-01-22', '2022-02-22', '2022-02-15'],
    '订单编号': ['444111', '444122', '444132', '444003', '444244']
}

df = pd.DataFrame(product_info)
print(df)
'''
                   订单号  数量  价格(USD)             状态        订单日期    订单编号
0  2951110000099262111  92      230  Not Delivered  2022-02-12  444111
1  2181910000909928191  61      122  Not Delivered  2022-03-02  444122
2  2194560000121355545  66      150  Not Delivered  2022-01-22  444132
3  1194560000121311126  33      190    Not Shipped  2022-02-22  444003
4  1483160000121315483  15      200  Not Delivered  2022-02-15  444244
'''

方法介绍

运算符:==!=><and(&)or(|)not

单条件查询

# 提取数量为92的所有行
query_df = df.query("数量 == 92")
print(query_df)
'''
                   订单号  数量  价格(USD)             状态        订单日期    订单编号
0  2951110000099262111  92      230  Not Delivered  2022-02-12  444111
'''

多条件查询

# 查询数量为92 且 单位价格为230的所有行
query_df = df.query("数量 == 92 and `价格(USD)` == 230")
print(query_df)
'''
                   订单号  数量  价格(USD)             状态        订单日期    订单编号
0  2951110000099262111  92      230  Not Delivered  2022-02-12  444111
'''

# 查询数量为92 或 单位价格为200的所有行
query_df = df.query("数量 == 92 or `价格(USD)` == 200")
print(query_df)
'''
                   订单号  数量  价格(USD)             状态        订单日期    订单编号
0  2951110000099262111  92      230  Not Delivered  2022-02-12  444111
4  1483160000121315483  15      200  Not Delivered  2022-02-15  444244
'''

反向查询

# 数量不等于92的所有行
query_df = df.query("not(数量 == 92)")
print(query_df)
'''
                   订单号  数量  价格(USD)             状态        订单日期    订单编号
1  2181910000909928191  61      122  Not Delivered  2022-03-02  444122
2  2194560000121355545  66      150  Not Delivered  2022-01-22  444132
3  1194560000121311126  33      190    Not Shipped  2022-02-22  444003
4  1483160000121315483  15      200  Not Delivered  2022-02-15  444244
'''

按文本查询

# 获取状态为Not Shipped的所有记录
query_df = df.query("状态 == 'Not Shipped'")
print(query_df)
'''
                   订单号  数量  价格(USD)           状态        订单日期    订单编号
3  1194560000121311126  33      190  Not Shipped  2022-02-22  444003
'''

# 获取订单号开头为21的行
query_df = df.query("订单号.str.startswith('21')")
print(query_df)
'''
                   订单号  数量  价格(USD)             状态        订单日期    订单编号
0  2181910000909928191  61      122  Not Delivered  2022-03-02  444122
1  2194560000121355545  66      150  Not Delivered  2022-01-22  444132
'''

按日期查询

# 在示例数据中,订单日期列是字符串日期,所以我们需要先进行转换
df["订单日期"] = pd.to_datetime(df["订单日期"], format="%Y-%m-%d")

# 获得2月份的所有记录
query_df = df.query("订单日期.dt.month == 2")
print(query_df)
'''
                   订单号  数量  价格(USD)             状态       订单日期    订单编号
0  2951110000099262111  92      230  Not Delivered 2022-02-12  444111
3  1194560000121311126  33      190    Not Shipped 2022-02-22  444003
4  1483160000121315483  15      200  Not Delivered 2022-02-15  444244
'''
# 获取2022年2月订购日为15或以上的所有订单,query_df1 等价于query_df2
query_df1 = df.query("订单日期.dt.month==2 and 订单日期.dt.year==2022 and 订单日期.dt.day>=15")
print(query_df1)

query_df2 = df.query("订单日期>='2022-02-15' and 订单日期<='2022-02-28'")
print(query_df2)
'''
                   订单号  数量  价格(USD)             状态       订单日期    订单编号
3  1194560000121311126  33      190    Not Shipped 2022-02-22  444003
4  1483160000121315483  15      200  Not Delivered 2022-02-15  444244
'''

使用变量

status = 'Not Shipped'
query_df = df.query("状态 == @status")
print(query_df)
'''
                  订单号  数量  价格(USD)           状态        订单日期    订单编号
3  1194560000121311126  33      190  Not Shipped  2022-02-22  444003
'''
基于分布式模型预测控制的多个固定翼无人机一致性控制(Matlab代码实现)内容概要:本文围绕“基于分布式模型预测控制的多个固定翼无人机一致性控制”展开,采用Matlab代码实现相关算法,属于顶级EI期刊的复现研究成果。文中重点研究了分布式模型预测控制(DMPC)在多无人机系统中的一致性控制问题,通过构建固定翼无人机的动力学模型,结合分布式协同控制策略,实现多无人机在复杂环境下的轨迹一致性和稳定协同飞行。研究涵盖了控制算法设计、系统建模、优化求解及仿真验证全过程,并提供了完整的Matlab代码支持,便于读者复现实验结果。; 适合人群:具备自动控制、无人机系统或优化算法基础,从事科研或工程应用的研究生、科研人员及自动化、航空航天领域的研发工程师;熟悉Matlab编程和基本控制理论者更佳; 使用场景及目标:①用于多无人机协同控制系统的算法研究与仿真验证;②支撑科研论文复现、毕业设计或项目开发;③掌握分布式模型预测控制在实际系统中的应用方法,提升对多智能体协同控制的理解与实践能力; 阅读建议:建议结合提供的Matlab代码逐模块分析,重点关注DMPC算法的构建流程、约束处理方式及一致性协议的设计逻辑,同时可拓展学习文中提及的路径规划、编队控制等相关技术,以深化对无人机集群控制的整体认知。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值