温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

pandas如何快速筛选行

发布时间:2026-10-14 11:46:04 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 pandas 中,快速筛选行的方法很多,主要取决于筛选条件和数据规模。下面按常见场景给你总结几种高效且常用的方式。


一、布尔索引(最常用、最快)

import pandas as pd

df = pd.DataFrame({
    'age': [20, 30, 40, 50],
    'score': [80, 90, 70, 60]
})

# 筛选 age > 30
df_filtered = df[df['age'] > 30]

✅ 适合:单条件 / 多条件
✅ 速度:非常快


二、多条件筛选(注意括号)

# age > 30 且 score >= 70
df_filtered = df[(df['age'] > 30) & (df['score'] >= 70)]

⚠️ 必须用 &、|,并且每个条件加括号


三、使用 query()(代码更简洁)

df_filtered = df.query("age > 30 and score >= 70")

✅ 可读性好
⚠️ 超大数据量时略慢于布尔索引


四、按字符串 / 类别筛选

df[df['name'].isin(['Alice', 'Bob'])]

或包含某字符:

df[df['name'].str.contains('li')]

五、按索引筛选(很快)

df.loc[df.index > 10]

或按日期索引:

df.loc['2024-01-01':'2024-06-01']

六、大数据的加速技巧

1️⃣ 只保留需要的列

df[['age', 'score']][df['age'] > 30]

2️⃣ 用 eval()(高级)

df.eval("age > 30 and score >= 70")

3️⃣ 用 numpy(极致性能)

import numpy as np
mask = (df['age'].values > 30) & (df['score'].values >= 70)
df_filtered = df[mask]

七、快速删除不符合条件的行

df = df[df['age'] > 30]

或

df.drop(df[df['age'] <= 30].index, inplace=True)

总结速查表

场景 推荐方式
单条件 布尔索引
多条件 布尔索引 + &
可读性 query()
超大数据 numpy / eval
按索引 loc

如果你有具体数据结构或筛选条件,我可以直接帮你写最优代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手