我有以下代码
import polars as pl
mapping = {
'CASH': {'qty': 1, 'origin': 'E'},
'ITEM': {'qty': -9, 'origin': 'A'},
'CHECK': {'qty': 46, 'origin': 'A'},
}
df = pl.DataFrame([{'type': k} | v for k, v in mapping.items()])\
.with_columns(pl.struct(['qty', 'origin']).alias('mapping'))\
.select(pl.col(['type', 'mapping']))
因此,字典的键type
应成为一个名为的新列,而字典的值mapping
应位于其自己的列中。我的上述实现有效,df
如下所示:
shape: (3, 2)
┌───────┬───────────┐
│ type ┆ mapping │
│ --- ┆ --- │
│ str ┆ struct[2] │
╞═══════╪═══════════╡
│ CASH ┆ {1,"E"} │
│ ITEM ┆ {-9,"A"} │
│ CHECK ┆ {46,"A"} │
└───────┴───────────┘
但是我的实现很长,而且看起来效率不高。有没有更惯用的极坐标方法来创建这个数据框?
标准
DataFrame
构造函数接受字典。只需指定列名并使用dict.keys()
和dict.values()
作为数据即可。您可以直接创建两列,如下所示: