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

DataFrame指定列转为int后转列表仍为float的问题求助

问题解决:DataFrame转列表后最后一列仍为浮点数的问题

问题原因

你遇到的问题源于DataFrame的values属性会将整个数据集转换为统一的numpy数组类型。由于前两列是float类型,numpy会自动把整个数组的 dtype 统一为float64——哪怕你已经将最后一列转为int64,最终也会被强制转为浮点数,所以tolist()后还是显示0.0、1.0这类格式。

解决方案

以下几种方法可以保留各列的原始数据类型,让最后一列在列表中显示为整数:

方法1:使用apply逐行转换

利用apply按行处理,每行元素会保留对应列的数据类型:

# 逐行转换为列表,保留各列类型
data_to_list = data.apply(lambda row: row.tolist(), axis=1).tolist()

方法2:用itertuples迭代构建列表

itertuples返回每行的元组,会保留各列原始类型,再转为列表即可:

# 迭代每行(排除索引),转为列表
data_to_list = [list(row) for row in data.itertuples(index=False)]

方法3:指定object类型转numpy数组

通过to_numpy指定dtype=object,允许数组容纳不同类型元素,再转列表:

# 转为object类型数组后转列表
data_to_list = data.to_numpy(dtype=object).tolist()

验证效果

用你的示例数据测试后,转换后的列表会变成:

[[1.53, 3.13, 0],
 [0.58, 2.83, 0],
 ...
 [2.56, 0.16, 1]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:40:26