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

如何解决Pandas DataFrame中意外出现元组类型列名的问题

问题描述

执行代码时,Pandas生成的DataFrame出现元组类型的列名。原本计划对除class和path之外的所有列做归一化,先通过pop()移除这两列,归一化完成后重新添加回去,但最终列名却被存储为元组。

代码如下:

class_ = dataset.pop("class")
path_ = dataset.pop("path")

layer = tf.keras.layers.LayerNormalization(axis=0)
g = layer(dataset)
gh = pd.DataFrame(np.array(g),columns=[dataset.columns.values])
gho = gh.sort_index(axis=1)
gho["path"] = list(path_)
gho["class"] = list(class_)

期望执行print(gho.columns.values)时输出:

['path' 'class' 'velocity']

实际得到的结果:

[('path',) ('class',) ('velocity',)]
解决办法

问题根源在创建DataFrame的列参数上:columns=[dataset.columns.values]多套了一层列表,导致原本是一维数组的dataset.columns.values被包装成二维结构,Pandas会将每个元素识别为元组。

只需去掉外层方括号,直接传入dataset.columns.values作为columns参数即可:

gh = pd.DataFrame(np.array(g), columns=dataset.columns.values)

也可以直接使用dataset.columns替代dataset.columns.values,效果一致:

gh = pd.DataFrame(np.array(g), columns=dataset.columns)

修改后生成的列名会是普通字符串类型,后续添加path和class列后,列名格式就能符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:05:26