前言
每天起床刷一刷
显示前三行
Pandas常用取子集方法总结表
方法 | 作用 | 示例 | 备注 |
---|---|---|---|
df.head() | 取前5行 | df.head() | 默认前5行,可以指定数量,如 df.head(10) |
df.tail() | 取最后5行 | df.tail(3) | 取最后3行 |
df.sample(n) | 随机抽取n行 | df.sample(2) | 乱序抽取,默认不放回,可设置 replace=True |
df.iloc[i] | 按位置取第i行 | df.iloc[0] | 第0行,注意是位置,不是标签 |
df.iloc[i:j] | 按位置取i到j-1行 | df.iloc[1:4] | 类似 Python 切片,左闭右开 |
df.loc[label] | 按索引标签取行 | df.loc[2] | 如果 DataFrame 索引是自定义的名字,用 .loc[] |
df[:n] | 快速取前n行(切片) | df[:5] | 不推荐,容易出错,还是用 .head() 更稳 |
df.query('条件') | 根据条件筛选行 | df.query('age > 30') | 适合写复杂条件,且更简洁 |
df[df['列名'] > 值] | 按列取子集(布尔索引) | df[df['age'] > 30] | 最常用的条件过滤方式 |
表格四则运算
运算 | 符号 | Python常规用法 | Pandas中推荐用法 | 说明 |
---|---|---|---|---|
加法 | + | a + b | df['col'].add(x) | 逐元素相加 |
减法 | - | a - b | df['col'].sub(x) | 逐元素相减 |
乘法 | * | a * b | df['col'].mul(x) 或 df['col'].multiply(x) | 逐元素相乘 |
除法 | / | a / b | df['col'].div(x) 或 df['col'].divide(x) | 逐元素相除 |
创建新列
- 直接赋值
1
df['new_col'] = df['old_col'] * 2
- 赋固定值
1 2
df['status'] = 'active' df['flag'] = 1
- 根据多列计算生成
1 2
df['ratio'] = df['col1'] / df['col2'] df['full_name'] = df['first'] + ' ' + df['last']
- 通过 apply() 添加复杂逻辑列 ```bash df[‘category’] = df[‘score’].apply(lambda x: ‘pass’ if x > 60 else ‘fail’)
1
2
3
4
5
5. 使用 assign()(链式调用)
```bash
df = df.assign(bonus=lambda x: x['salary'] * 2)
创建新行
- 使用 loc[] / iloc[] 手动添加一行(指定索引) ```bash df.loc[len(df)] = [‘Tom’, 25000]
1
2
3
4
5
2. 使用 append() 添加单行或多行(已弃用,改用 concat)
```bash
new_row = pd.DataFrame([{'name': 'Tom', 'salary': 25000}])
df = pd.concat([df, new_row], ignore_index=True)
- 创建 DataFrame 时直接包含所有行 ```bash df = pd.DataFrame([ {‘name’: ‘Alice’, ‘salary’: 5000}, {‘name’: ‘Bob’, ‘salary’: 6000} ])
```