我有一个带有开始日期和结束日期的数据框(开始促销和结束促销)。我想使用 Python Polars 创建一个新列(来自前面提到的列),它将是一个数组或结构对象。这样做的目的是为了可以分解该列,为每个日期创建一个值,稍后可以将其连接到另一个数据框。
这是一个示例数据框:
开始促销 | 促销结束 | 价格 |
---|---|---|
2024-05-01 | 2024-05-05 | 12 |
2023-12-30 | 2024-01-01 | 10 |
期望的最终结果是:
开始促销 | 促销结束 | 价格 | 促销日期 |
---|---|---|---|
2024-05-01 | 2024-05-05 | 12 | [“2024-05-01”、“2024-05-02”、“2024-05-03”、“2024-05-04”、“2024-05-05”] |
2023-12-30 | 2024-01-01 | 10 | ["2023-12-30", "2023-12-31", "2024-01-01"] |
以下是爆炸后的样子:
开始促销 | 促销结束 | 价格 | 促销日期 |
---|---|---|---|
2024-05-01 | 2024-05-05 | 12 | “2024-05-01” |
2024-05-01 | 2024-05-05 | 12 | “2024-05-02” |
2024-05-01 | 2024-05-05 | 12 | “2024-05-03” |
2024-05-01 | 2024-05-05 | 12 | “2024-05-04” |
2024-05-01 | 2024-05-05 | 12 | “2024-05-05” |
2023-12-30 | 2024-01-01 | 10 | “2023-12-30” |
2023-12-30 | 2024-01-01 | 10 | “2023-12-31” |
2023-12-30 | 2024-01-01 | 10 | “2024-01-01” |
这是一个尝试使用的示例数据框:
import polars as pl
data = {
"Start Promotion": ["2024-05-01", "2023-12-30"],
"End Promotion": ["2024-05-05", "2024-01-01"],
"Price": [12, 10]
}
df = pl.DataFrame(data)
如果您有任何需要澄清的问题,请告诉我。
.date_ranges()
来实现:
(
df
.with_columns(
pl.date_ranges("Start Promotion", "End Promotion").alias("Promotion Dates")
)
)
┌─────────────────┬───────────────┬───────┬─────────────────────────────────┐
│ Start Promotion ┆ End Promotion ┆ Price ┆ Promotion Dates │
│ --- ┆ --- ┆ --- ┆ --- │
│ date ┆ date ┆ i64 ┆ list[date] │
╞═════════════════╪═══════════════╪═══════╪═════════════════════════════════╡
│ 2024-05-01 ┆ 2024-05-05 ┆ 12 ┆ [2024-05-01, 2024-05-02, … 202… │
│ 2023-12-30 ┆ 2024-01-01 ┆ 10 ┆ [2023-12-30, 2023-12-31, 2024-… │
└─────────────────┴───────────────┴───────┴─────────────────────────────────┘