如何在Polars数据框中添加列描述且不修改列名?附Pandas示例
Polars 添加列描述(不修改列名)
Polars没有Pandas那种MultiIndex列名的直接等效实现,但可以通过**列元数据(Metadata)**来存储列描述,完全不会修改原列名,是更贴合Polars设计理念的方案。以下是两种可行实现:
方法一:为已有数据框的列添加描述
通过set_metadata方法给每个列附加描述信息:
import polars as pl import numpy as np # 创建数据框 data = { 'Column1': np.random.rand(5), 'Column2': np.random.rand(5), 'Column3': np.random.rand(5) } df = pl.DataFrame(data) # 定义列描述 column_desc = { 'Column1': 'Description for Column 1', 'Column2': 'Description for Column 2', 'Column3': 'Description for Column 3' } # 批量添加元数据 for col_name, desc in column_desc.items(): df = df.with_columns(pl.col(col_name).set_metadata({"description": desc})) # 验证描述信息 for col in df.columns: print(f"列名: {col}, 描述: {df.schema[col].metadata.get('description')}")
方法二:创建数据框时直接定义列描述
如果在初始化阶段就想绑定描述,可以通过pl.Field定义带元数据的Schema:
import polars as pl import numpy as np # 定义包含描述的Schema schema = [ pl.Field("Column1", dtype=pl.Float64, metadata={"description": "Description for Column 1"}), pl.Field("Column2", dtype=pl.Float64, metadata={"description": "Description for Column 2"}), pl.Field("Column3", dtype=pl.Float64, metadata={"description": "Description for Column 3"}), ] # 创建数据框并应用Schema data = { 'Column1': np.random.rand(5), 'Column2': np.random.rand(5), 'Column3': np.random.rand(5) } df = pl.DataFrame(data, schema=schema) # 查看描述信息 for field in df.schema: print(f"列名: {field.name}, 描述: {field.metadata.get('description')}")
说明
Polars的元数据机制专门用于存储列的附加信息,和Pandas的MultiIndex方案不同,它不会改变列名的显示或使用方式,仅在需要时通过schema对象读取描述,更符合Polars的轻量化设计。
内容的提问来源于stack exchange,提问作者Stefano Barone
相关产品推荐
相关产品推荐

