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

如何用Polars将单列数据集按首行名称拆分为6列

问题分析与修复方案

你的代码存在几个关键问题,导致无法正确拆分数据集:

  • 错误地用open()直接转换为Polars DataFrame,Polars有专门的CSV读取方法,无需手动打开文件
  • split()方法使用错误,Polars中字符串操作需要通过str命名空间调用
  • 列赋值方式不符合Polars的语法规范

修正后的代码

import polars as pl

# 读取单列CSV文件,先不识别表头(因为首行是列名但当前被放在数据列里)
data_raw = pl.read_csv(
    'C:\\Users\\DESKTOP\\Documents\\Pedro Amorim\\dados_de_poço\\dado_campos\\dado_campos1.csv',
    has_header=False,
    new_columns=["raw_data"]  # 给唯一的列命名
)

# 获取首行的列名(原首行的内容)
column_names = data_raw[0, "raw_data"].split()

# 从第二行开始处理数据,拆分单列为6列
data_processed = data_raw[1:].with_columns(
    pl.col("raw_data").str.split(' ', max_split=5, expand=True).alias("split_cols")
).unnest("split_cols")

# 给拆分后的列命名
data_processed = data_processed.rename({f"column_{i}": name for i, name in enumerate(column_names)})

print(data_processed)

关键修复点说明

  1. 正确读取CSV:用pl.read_csv()直接读取文件,指定has_header=False避免把首行列名误判为数据,同时给唯一列命名方便后续操作
  2. 提取列名:从第一行数据中提取需要的列名列表
  3. 拆分列:使用str.split()并设置max_split=5确保拆分为6列,再通过unnest()展开为独立列
  4. 重命名列:将拆分后的默认列名替换为原首行的内容

如果你的原文件是因为分隔符(多个空格)未被识别导致合并为单列,也可以尝试更简单的自动分隔符检测读取:

data_raw = pl.read_csv(
    'C:\\Users\\DESKTOP\\Documents\\Pedro Amorim\\dados_de_poço\\dado_campos\\dado_campos1.csv',
    sep=r'\s+'  # 匹配任意数量的空格作为分隔符
)
print(data_raw)

内容的提问来源于stack exchange,提问作者Pedro Cássio Dias de Amorim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:35:21