上一篇
Pandas数据框行选择完全指南 | 高效数据处理技巧
- Python
- 2025-07-17
- 1729
Pandas数据框行选择完全指南
在数据分析过程中,有效地选择和操作数据框的行是至关重要的技能。本指南将详细介绍Pandas中各种行选择方法,帮助您提升数据处理效率。
示例数据框
在开始学习各种选择方法前,我们先创建一个示例数据框:
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '赵六', '钱七'],
'年龄': [25, 32, 28, 35, 29],
'城市': ['北京', '上海', '广州', '深圳', '杭州'],
'工资': [15000, 18000, 22000, 25000, 19000],
'入职年份': [2019, 2017, 2018, 2016, 2020]
}
df = pd.DataFrame(data)
print(df)
数据框内容:
索引 | 姓名 | 年龄 | 城市 | 工资 | 入职年份 |
---|---|---|---|---|---|
0 | 张三 | 25 | 北京 | 15000 | 2019 |
1 | 李四 | 32 | 上海 | 18000 | 2017 |
2 | 王五 | 28 | 广州 | 22000 | 2018 |
3 | 赵六 | 35 | 深圳 | 25000 | 2016 |
4 | 钱七 | 29 | 杭州 | 19000 | 2020 |
1. 使用loc选择行
loc基于标签选择数据,可以同时选择行和列。
选择单行
# 选择索引为2的行
row_2 = df.loc[2]
print(row_2)
选择多行
# 选择索引1到3的行
rows_1_3 = df.loc[1:3]
print(rows_1_3)
选择特定行
# 选择索引为0和4的行
specific_rows = df.loc[[0, 4]]
print(specific_rows)
选择行和列
# 选择索引1-3的行,以及"姓名"和"工资"列
subset = df.loc[1:3, ['姓名', '工资']]
print(subset)
2. 使用iloc选择行
iloc基于整数位置选择数据,类似于Python的列表索引。
选择单行
# 选择第三行(索引为2)
third_row = df.iloc[2]
print(third_row)
选择多行
# 选择第2-4行(索引1-3)
rows_2_4 = df.iloc[1:4]
print(rows_2_4)
选择不连续的行
# 选择第1行和第4行(索引0和3)
specific_rows = df.iloc[[0, 3]]
print(specific_rows)
选择行和列
# 选择第1-3行,第0、2、4列
subset = df.iloc[0:3, [0, 2, 4]]
print(subset)
3. 布尔索引(条件选择)
使用布尔条件选择满足特定条件的行。
单条件选择
# 选择年龄大于30的员工
older_than_30 = df[df['年龄'] > 30]
print(older_than_30)
多条件选择
# 选择工资在20000以上且在上海的员工
high_salary_shanghai = df[(df['工资'] > 20000) & (df['城市'] == '上海')]
print(high_salary_shanghai)
使用isin方法
# 选择城市在北京或广州的员工
beijing_guangzhou = df[df['城市'].isin(['北京', '广州'])]
print(beijing_guangzhou)
结合loc使用
# 选择2020年后入职的员工,只显示姓名和工资
recent_employees = df.loc[df['入职年份'] >= 2020, ['姓名', '工资']]
print(recent_employees)
4. 使用query方法
query方法提供了一种更简洁的条件筛选语法。
基本查询
# 选择工资超过20000的员工
high_earners = df.query("工资 > 20000")
print(high_earners)
多条件查询
# 选择年龄在25-30之间且在北上广的员工
young_city = df.query("25 <= 年龄 <= 30 and 城市 in ['北京', '上海', '广州']")
print(young_city)
使用变量查询
# 使用变量作为查询条件
min_salary = 18000
max_age = 30
result = df.query("工资 >= @min_salary and 年龄 <= @max_age")
print(result)
5. 切片选择
直接使用Python切片语法选择连续的行。
基本切片
# 选择前3行
first_three = df[:3]
print(first_three)
# 选择第2行到最后一行
from_second = df[1:]
print(from_second)
步长切片
# 每隔一行选择一行
every_other = df[::2]
print(every_other)
6. 方法比较与选择建议
方法 | 优点 | 缺点 | 使用场景 |
---|---|---|---|
loc | 基于标签选择,直观易读 | 需要知道标签名 | 按标签选择行/列 |
iloc | 基于位置,选择快速 | 位置变动时可能出错 | 按位置选择行/列 |
布尔索引 | 灵活的条件选择 | 复杂条件语法稍长 | 条件筛选行 |
query | 语法简洁,可读性好 | 复杂表达式支持有限 | 简单条件筛选 |
切片 | 简单快速 | 只能选择连续行 | 选择连续行范围 |
最佳实践建议
- 明确标签时优先使用loc
- 按位置选择时使用iloc
- 复杂条件筛选使用布尔索引
- 简单条件筛选可考虑query提高可读性
- 选择连续行范围使用切片语法
- 组合使用这些方法可以完成绝大多数行选择需求
总结
掌握Pandas的行选择方法是数据处理的基础。根据具体情况选择合适的方法:
- 使用loc进行基于标签的选择
- 使用iloc进行基于位置的选择
- 使用布尔索引进行条件筛选
- 使用query简化查询语法
- 使用切片选择连续行范围
灵活组合这些方法,可以高效地完成各种数据选择任务,为后续的数据分析和处理打下坚实基础。
本文由DuZhuo于2025-07-17发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20255791.html
发表评论