[ PROMPT_NODE_27026 ]
operations
[ SKILL_DOCUMENTATION ]
# Polars 操作参考手册
本参考手册涵盖了所有常见的 Polars 操作及详尽示例。
## 选择操作
### 选择列
**基础选择:**
python
# 选择特定列
df.select("name", "age", "city")
# 使用表达式
df.select(pl.col("name"), pl.col("age"))
**基于模式的选择:**
python
# 所有以 "sales_" 开头的列
df.select(pl.col("^sales_.*$"))
# 所有数值列
df.select(pl.col(pl.NUMERIC_DTYPES))
# 除特定列外的所有列
df.select(pl.all().exclude("id", "timestamp"))
**计算列:**
python
df.select(
"name",
(pl.col("age") * 12).alias("age_in_months"),
(pl.col("salary") * 1.1).alias("salary_after_raise")
)
### With Columns (添加/修改)
添加新列或修改现有列,同时保留所有其他列:
python
# 添加新列
df.with_columns(
age_doubled=pl.col("age") * 2,
full_name=pl.col("first_name") + " " + pl.col("last_name")
)
# 修改现有列
df.with_columns(
pl.col("name").str.to_uppercase().alias("name"),
pl.col("salary").cast(pl.Float64).alias("salary")
)
# 并行执行多个操作
df.with_columns(
pl.col("value") * 10,
pl.col("value") * 100,
pl.col("value") * 1000,
)
## 过滤操作
### 基础过滤
python
# 单条件
df.filter(pl.col("age") > 25)
# 多条件 (AND)
df.filter(
pl.col("age") > 25,
pl.col("city") == "NY"
)
# OR 条件
df.filter(
(pl.col("age") > 30) | (pl.col("salary") > 100000)
)
# NOT 条件
df.filter(~pl.col("active"))
df.filter(pl.col("city") != "NY")
### 高级过滤
**字符串操作:**
python
# 包含子字符串
df.filter(pl.col("name").str.contains("John"))
# 以...开头
df.filter(pl.col("email").str.starts_with("admin"))
# 正则匹配
df.filter(pl.col("phone").str.contains(r"^d{3}-d{3}-d{4}$"))
**成员资格检查:**
python
# 在列表中
df.filter(pl.col("city").is_in(["NY", "LA", "SF"]))
# 不在列表中
df.filter(~pl.col("status").is_in(["inactive", "deleted"]))
**范围过滤:**
python
# 值之间
df.filter(pl.col("age").is_between(25, 35))
# 日期范围
df.filter(
pl.col("date") >= pl.date(2023, 1, 1),
pl.col("date") <= pl.date(2023, 12, 31)
)
**空值过滤:**
python
# 过滤掉空值
df.filter(pl.col("value").is_not_null())
# 仅保留空值
df.filter(pl.col("value").is_null())
## 分组与聚合
### 基础