如何将含行列标题的列表转换为Polars DataFrame?
解决Polars转换行列标题列表为DataFrame的问题
直接用pl.DataFrame(list)会出现转置、数值存为字符串的问题,按以下步骤处理即可得到预期格式:
步骤1:拆分原列表的列名和数据行
原列表的第一个元素是列标题,剩余元素是包含指标和数值的数据行,先拆分两者:
import polars as pl data = [ ['Earnings estimate', 'Current qtr. (Jun 2024)', 'Next qtr. (Sep 2024)', 'Current year (2024)', 'Next year (2025)'], ['No. of analysts', '13', '11', '26', '26'], ['Avg. Estimate', '1.52', '1.62', '6.27', '7.23'], ['Low estimate', '1.36', '1.3', '5.02', '5.88'], ['High estimate', '1.61', '1.74', '6.66', '8.56'], ['Year ago EPS', '1.76', '1.36', '5.74', '6.27'], ] # 提取列标题和数据行 column_names = data[0] data_rows = data[1:]
步骤2:创建DataFrame并转换数值类型
用拆分后的列名指定schema,再将数值列从字符串转为浮点/整数类型:
# 创建DataFrame,指定列名 df = pl.DataFrame(data_rows, schema=column_names) # 将除指标列外的所有列转为数值类型 df = df.with_columns( pl.exclude(column_names[0]).cast(pl.Float64) ) # 可选:将指标列设为行索引(匹配预期的表格展示形式) df = df.set_index(column_names[0])
最终效果
处理后的DataFrame:
- 列标题为原列表第一行的时间段
- 行标题为各盈利估算指标
- 数值列均为数字类型(不再是字符串)
- 完全匹配预期的表格结构
内容的提问来源于stack exchange,提问作者Rhys
相关产品推荐
相关产品推荐

