在 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']
df[['age', 'score']][df['age'] > 30]
eval()(高级)df.eval("age > 30 and score >= 70")
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 |
如果你有具体数据结构或筛选条件,我可以直接帮你写最优代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。