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

pandas从txt生成DataFrame列名后去除括号逗号表头变NaN如何解决

问题解决方案

问题根源

  • 你从feature_names.txt读取得到的features是单列DataFrame,其.values属性返回的是shape为(n, 1)的二维数组,将其直接赋值给dataset.columns后,每个列名本质是仅含单个字符串的类元组对象,不是纯字符串类型
  • pandas的str系列访问器仅支持处理字符串类型的索引元素,非字符串类型调用str.replace会直接返回NaN

修复方案

方案1:读取特征名时直接处理(推荐)

读取特征名时直接转为一维字符串列表,从根源避免列名格式异常:

import pandas as pd
# squeeze参数自动把单列DataFrame转为一维Series,再转成列表
features = pd.read_csv("feature_names.txt", header=None).squeeze('columns').tolist()
dataset = pd.read_csv("dataset.csv")
dataset.columns = features

方案2:修正现有异常列名

如果已经完成数据集读取,不想重新跑加载逻辑,可以直接遍历处理现有列名:

# 提取每个列名的第一个元素,同时清理多余符号
dataset.columns = [col[0].strip('(), ') for col in dataset.columns]

如果需要保留字符串处理逻辑,可以先把列名转成字符串类型再操作:

dataset.columns = dataset.columns.astype(str).str.replace("[() ,]", "", regex=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:18:03