You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中如何将列选择、筛选与排序合并为单行代码?

问题描述

这是我的首次提问!这类操作在SQL中十分基础,理应很简单。我希望编写一个Pandas脚本完成以下操作:

  • 从表中选择特定列
  • 对列添加Where条件
  • 对表格排序

我已给出示例DataFrame、对应的SQL查询,以及分步实现的Pandas代码,但觉得步骤过于繁琐,想请教是否有更简洁的写法?

示例DataFrame

CustomerIssueCodeCountRandom
1X5xxx
2Y5xxx
3Z10xxx

对应SQL查询

Select CustomerId, IssueCode, Count 
From DataFram 
where Count= 5
order by CustomerId

我的分步Pandas代码

# 选择列
select_columns = df.loc[:,["CustomerId","IssueCode","Count"]]
# 添加Where条件
where_clause = select_columns.where(select_columns.Count == 5)
# 排序
sort_clause = where_clause.sort_values(by=['CustomerId'], ascending=False)

简洁写法方案

Pandas支持链式调用,可以把三步操作合并为一行代码,简洁且可读性强:

result = df.loc[df['Count'] == 5, ['CustomerId', 'IssueCode', 'Count']].sort_values(by='CustomerId', ascending=False)

代码说明

  • df.loc[df['Count'] == 5, ['CustomerId', 'IssueCode', 'Count']]:通过loc同时完成行筛选和列选择,第一个参数对应SQL的where条件,第二个参数对应要选取的列
  • .sort_values(by='CustomerId', ascending=False):直接在筛选后的结果上调用排序方法,完成最终排序操作

另外需要注意:你原来用where方法会保留原DataFrame的所有行索引(不符合条件的行会显示为NaN),而用loc筛选和SQL的where行为完全一致,只会返回符合条件的行。

内容的提问来源于stack exchange,提问作者DatabaseGuy88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:41:28