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

如何将整数转为二进制?new_cases列二值化代码失效求助

问题排查与解决

1. 代码逻辑偏差(最可能原因)

你写的Dt[Dt['new_cases'] >= 1 ] = 1是把符合条件的整行所有列都设为1,而非仅修改new_cases列。如果这不是你的预期,或者因链式索引触发SettingWithCopyWarning导致赋值失效,就会出现“没生效”的假象。

正确的目标列赋值写法应该用loc定位,避免链式索引问题:

Dt.loc[Dt['new_cases'] >= 1, 'new_cases'] = 1

2. 数据类型不匹配

如果new_cases列是object类型(比如存了字符串格式的数字),>=1的比较逻辑会直接失效。先检查数据类型:

print(Dt['new_cases'].dtype)

若为object,先转换为数值类型:

Dt['new_cases'] = pd.to_numeric(Dt['new_cases'], errors='coerce')

errors='coerce'会把无法转换的值转为NaN,之后再执行二值化操作。

3. NaN值干扰

new_cases列的NaN值与任何数值比较结果都是False,这类行不会被修改。如果需要处理NaN,可先填充:

Dt['new_cases'] = Dt['new_cases'].fillna(0)

再执行二值化逻辑。

4. 视图/副本问题

如果Dt是从其他DataFrame切片生成的(比如Dt = original_df[cols]),可能只是原数据的视图而非独立副本,直接赋值不会同步到原数据。可以通过内部属性排查:

print(Dt._is_view)

若返回True,先创建独立副本再操作:

Dt = original_df[cols].copy()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:50:23