如何从NumPy数组创建Polars DataFrame并指定列名?
如何从NumPy数组创建带指定列名的Polars DataFrame
你遇到的问题是因为Polars的DataFrame构造函数没有columns参数(这和Pandas的API设计不同),不过不用先创建再重命名,直接用schema参数就能在创建时指定列名,更高效。
直接指定列名的方法
Polars的schema参数支持传入字符串列表,用来定义每一列的名称。你可以直接把生成的列名列表传给它,甚至不需要把NumPy数组转成list(Polars可以直接处理NumPy数组):
import polars as pl import numpy as np # 示例NumPy数组 noisy_data = np.random.rand(5, 3) num_columns = noisy_data.shape[1] # 使用schema参数指定列名 df = pl.DataFrame(noisy_data, schema=[f"property_{i}" for i in range(num_columns)]) print(df)
执行后会直接生成带有property_0、property_1、property_2列名的DataFrame。
备选方案:创建后重命名列
如果确实需要先创建DataFrame再调整列名,也可以用rename方法快速完成:
df = pl.DataFrame(noisy_data) # 按顺序重命名所有列 df = df.rename([f"property_{i}" for i in range(num_columns)])
或者写成更简洁的一行:
df = pl.DataFrame(noisy_data).rename([f"property_{i}" for i in range(num_columns)])
补充说明
Polars的schema参数不仅能指定列名,还可以同时定义列的数据类型(比如schema={"property_0": pl.Float64, "property_1": pl.Int32});如果只传列名列表,Polars会自动推断每一列的数据类型,和直接传入数组时的行为一致。
内容的提问来源于stack exchange,提问作者Pau Marin
相关产品推荐
相关产品推荐

