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

如何按Pandas DataFrame的A列排序并保留整行,或筛选指定值行?

Pandas 排序与筛选解决方案

数据初始化(可直接测试)

import pandas as pd

data = {
    'Column A': ['D', 'E', 'E', 'D', 'E'],
    'Column B': [40, 50, 70, 60, 90],
    'Column C': ['hex', 'def', 'foo', 'bar', 'key']
}
df = pd.DataFrame(data, index=[1,2,3,4,5])

1. 按Column A排序并保留关联行

直接用sort_values()函数,指定排序列即可,默认保留原索引和所有关联数据:

# 按Column A升序排序(D在前,E在后)
sorted_df = df.sort_values(by='Column A')

如果需要在同组内(比如都是E的行)按其他规则排序,比如按Column B降序,可以扩展参数:

# 先按Column A升序,同组内按Column B降序
sorted_df = df.sort_values(by=['Column A', 'Column B'], ascending=[True, False])

2. 筛选仅包含D或E的行

不用手动找索引,直接用布尔索引就能快速筛选:

# 筛选Column A为D或E的行(通用写法,适用于数据中有其他值的情况)
filtered_df = df[df['Column A'].isin(['D', 'E'])]

# 仅筛选E的行
filtered_E_df = df[df['Column A'] == 'E']

关于多索引的疑问

完全不需要用多索引来实现这些需求,上面的基础方法已经足够高效处理13000行的数据集。另外你之前尝试的df.loc也可以结合布尔条件使用,比如:

# 用loc筛选D的行,不用知道具体索引
d_rows = df.loc[df['Column A'] == 'D']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:52:45