You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Polars是否支持原生方式存储DataFrame属性?

使用Polars读写带自定义属性的Parquet文件

Polars内置的Parquet读写功能支持自定义元数据,可以轻松实现DataFrame关联属性的可靠存储与读取,无需依赖PyArrow的复杂配置。

写入带属性的Parquet文件

将自定义属性序列化为JSON字符串,通过write_parquet的metadata参数存入Parquet文件:

import polars as pl
import json

# 创建目标DataFrame
df = pl.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': ['a', 'b', 'c', 'd', 'e'],
})

# 定义DataFrame关联属性
df_attributes = {
    "source": "dataset.csv",
    "created_on": "2023-07-06",
    "unique_identifier": "ABC123"
}

# 将属性转为JSON字符串,存入Parquet元数据字典
parquet_metadata = {"custom_attributes": json.dumps(df_attributes)}

# 写入Parquet文件,附带自定义元数据
df.write_parquet("dataset_with_attrs.parquet", metadata=parquet_metadata)

读取Parquet文件及关联属性

先读取Parquet文件的元数据解析出属性,再读取DataFrame本身:

import polars as pl
import json

# 读取Parquet文件的元数据
parquet_file_metadata = pl.io.parquet.read_metadata("dataset_with_attrs.parquet")

# 提取并解析自定义属性(元数据值为bytes类型,需解码后反序列化)
loaded_attributes = json.loads(parquet_file_metadata.metadata[b'custom_attributes'].decode('utf-8'))

# 读取DataFrame内容
loaded_df = pl.read_parquet("dataset_with_attrs.parquet")

# 验证结果
print("读取到的属性:", loaded_attributes)
print("读取到的DataFrame:")
print(loaded_df)

注意事项

  • Polars要求Parquet元数据的键值均为字符串类型,因此需要将字典格式的属性序列化为JSON字符串后存储。
  • 读取元数据时,键会自动转为bytes类型,需使用字节形式的键(如b'custom_attributes')访问对应值,解码后再反序列化为字典。

内容的提问来源于stack exchange,提问作者Isaacnfairplay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:02:49