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

将二维ndarray存入DataFrame单列仅保留第0列的原因咨询

问题描述

执行以下代码:

import pandas as pd
df=pd.read_csv("")
df.head()

(数据集包含Gender、Height、Weight三列)

接着执行编码相关代码:

a=enc.fit_transform(df)
print(a)
print(type(a))
print(a.shape)
df["Gender"]=a

执行后发现:编码工具enc对df中全部三列完成编码,生成了形状为(10000,3)的二维ndarray,但将该数组赋值给df的"Gender"列时,仅数组的第0列值被存入,第1、2列的数值完全丢失。疑惑为何无法将10000×3的内容存入该列。

原因分析

Pandas的DataFrame单列仅支持存储一维数据,而你生成的a是二维数组(10000行×3列)。当直接把二维数组赋值给单个列时:

  • Pandas会尝试做维度匹配,由于单列只能容纳一维数据,它会自动提取二维数组的**第一列(索引为0的列)**来填充目标列,因为这部分的维度(10000×1)和列的要求匹配。
  • 剩下的两列因无法适配单列的一维结构,直接被丢弃,不会存入DataFrame中。
解决建议

如果要保留所有编码后的3列数据,有两种常规做法:

  1. 将编码后的二维数组转为新的DataFrame,和原数据合并:
encoded_cols = pd.DataFrame(a, columns=["Encoded_Gender", "Encoded_Height", "Encoded_Weight"])
df = pd.concat([df, encoded_cols], axis=1)
  1. 直接用编码后的数据替换原有的三列(若无需保留原始数据):
df[["Gender", "Height", "Weight"]] = a

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:02:45