在 Polars 中,selectors 和 df.select 方法都有助于选择 DataFrame 中的列,但它们的使用方式和目的略有不同。
selectors
selectors 是一个用于选择 DataFrame 中特定列的工具。它们提供了一种更灵活的方式来选择满足特定条件的列,特别是在处理大量列或者需要根据某些条件选择列的情况下。
selectors 包括多种方法,如:
- all: 选择所有列。
- contains: 选择包含特定字符串的列。
- ends_with: 选择以特定字符串结尾的列。
- starts_with: 选择以特定字符串开头的列。
- dtype_is: 选择具有特定数据类型的列。
- is_in: 选择列名在给定集合中的列。
- exclude: 排除符合特定条件的列。
- regex: 选择匹配正则表达式的列。
- numeric: 选择所有数值型列。
- string: 选择所有字符串型列。
- datetime: 选择所有日期时间型列。
这些方法可以单独使用或组合使用。
假设你有一个包含多个列的 DataFrame,你想要选择所有以 "price" 开头的列以及所有数值型列,可以这样做:
import polars as pl
# 创建一个示例 DataFrame
df = pl.DataFrame({
'price_open': [100, 105, 110, 115],
'price_close': [99, 104, 109, 114],
'volume': [1000, 1500, 2000, 2500],
'date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04'],
'symbol': ['AAPL', 'GOOG', 'MSFT', 'AMZN']
})
# 使用 selectors 选择特定列
selected_columns = df.select(
[
pl.col(pl.selectors.starts_with('price')),
pl.col(pl.selectors.numeric())
]
)
print(selected_columns)
在这个例子中,我们使用了 pl.selectors.starts_with('price') 来选择所有以 "price" 开头的列,并使用 pl.selectors.numeric() 来选择所有数值型列。然后,我们使用 pl.col 方法将这些选择器应用到 DataFrame 上。
你可以组合使用多个选择器来构建更复杂的查询。例如,选择所有以 "price" 开头的列和所有数值型列,但排除以 "price_close" 结尾的列:
# 选择所有以 "price" 开头的列和所有数值型列,但排除 "price_close"
selected_columns = df.select(
[
pl.col(pl.selectors.starts_with('price')).exclude(pl.selectors.ends_with('close')),
pl.col(pl.selectors.numeric())
]
)
print(selected_columns)
df.select
df.select 方法用于选择 DataFrame 中的特定列,通常通过提供列名列表来指定需要选择的列。这比使用 selectors 更直接,但不够灵活。
如果你想要选择上述 DataFrame 中的 "price_open" 和 "volume" 列,可以这样做:
# 使用 df.select 选择特定列
selected_columns = df.select(
[
pl.col('price_open'),
pl.col('volume')
]
)
print(selected_columns)
两者使用上的区别
- selectors:
- 提供了一种更灵活的方式来选择列。
- 可以根据列名、数据类型等条件选择列。
- 适用于选择满足特定条件的列,特别是在列名未知或列的数量很大时。
- df.select:
- 通常用于选择特定列名的列。
- 更直接,但不够灵活。
- 适用于列名已知且数量较少的情况。
总的来说,selectors 和 df.select 方法都可以用来选择 DataFrame 中的列,但它们的应用场景略有不同。如果你需要选择满足特定条件的列,或者在列名未知的情况下选择列,selectors 更合适。如果你只需要选择已知列名的列,df.select 更简单直接。
热门文章:
从 Pandas 到 Polars 二十六:在Polars中,不要遍历列
从 Pandas 到 Polars 二十三:如果你的数据已经排序,Polars可以为你提供助力
从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望
从 Pandas 到 Polars 十三:流式处理的关键参数
从 Pandas 到 Polars 十:“Polars 表达式“是什么?