我有一些数据结构如第一张图片所示。我喜欢重构数据框的地方。 初始数据的一小段:
id | 时间 | 价值 |
---|---|---|
2050 | 02-01 | 20 |
2051 | 02-01 | 25 |
2050 | 02-02 | 21 |
2051 | 02-02 | 22 |
2051 | 02-03 | 23 |
我希望重组数据帧的方式是使用时间戳列,然后为每个 externallogid 添加一列。我已经使用 pandas 完成了此操作,但由于文件相当大,并且必须多次使用,因此由于速度原因,我想在 Polars 中完成此操作。
预期输出:
时间 | 2050 | 2051 |
---|---|---|
02-01 | 20 | 25 |
02-02 | 21 | 22 |
02-03 | 南 | 23 |
我尝试过使用groupby函数,以及join/hstack/concat。但在尝试使用 Lazyframes 时似乎遇到了问题。
谢谢
生成数据:
import polars as pl
lf = pl.DataFrame({'id': [2050, 2051, 2050, 2051, 2051],
'time': ['2023-05-01',
'2023-05-01',
'2023-05-02',
'2023-05-02',
'2023-05-03'],
'value': [20, 25, 21, 22, 23]})
lf = lf.with_columns(pl.col("time").str.to_datetime("%Y-%m-%d"))
.pivot()
;
In [29]: lf.pivot('id', index='time')
Out[29]:
shape: (3, 3)
┌─────────────────────┬──────┬──────┐
│ time ┆ 2050 ┆ 2051 │
│ --- ┆ --- ┆ --- │
│ datetime[μs] ┆ i64 ┆ i64 │
╞═════════════════════╪══════╪══════╡
│ 2023-05-01 00:00:00 ┆ 20 ┆ 25 │
│ 2023-05-02 00:00:00 ┆ 21 ┆ 22 │
│ 2023-05-03 00:00:00 ┆ null ┆ 23 │
└─────────────────────┴──────┴──────┘