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

如何将含浮点数与对象的DataFrame转为保留表头的二进制DataFrame

解决方案

核心需求是将数值列中大于0的值转为1,0保持为0,同时保留Name列的字符串内容,以下是可行的实现方式:

方法1:Name未设为索引时

# 筛选出所有数值列(排除Name列)
numeric_columns = df.columns.drop("Name")
# 将数值列中大于0的值转为1,0保持0
df[numeric_columns] = df[numeric_columns].gt(0).astype(int)

方法2:Name已设为索引时

# 直接对所有数值列进行转换
df[:] = df.gt(0).astype(int)

之前尝试失败的原因

  • df.astype(int):浮点数转整数是截断取整,0.9这类小于1的正数会被直接转为0,不符合需求。
  • df.apply(pd.to_numeric, errors='coerce'):对整个DataFrame执行时,Name列的字符串会被强制转为NaN,必须只针对数值列使用该方法。
  • df.where(df <= 0.4, 1):未排除Name列时,字符串与浮点数的比较会触发类型错误;即便设为索引,若数据类型存在混合(比如数值列混入字符串)也会报错,而gt(0)的方式更稳妥,自动适配数值类型的判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:40:43