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

如何将DataFrame中0/1值替换为Yes/No并保存回原DataFrame?

解决DataFrame列值替换并保存回原表的问题

问题场景

需要将DataFrame中"Open"列的1/0替换为"Yes"/"No",且后续要处理其他列,但之前的替换结果无法保存回原DataFrame。

正确解决方案

方法1:使用map函数(最简洁高效)

直接通过字典映射替换值,适合单列批量替换:

merged_stores["Open"] = merged_stores["Open"].map({1: "Yes", 0: "No"})

后续处理其他列时,只需替换列名即可,比如处理"Holiday"列:

merged_stores["Holiday"] = merged_stores["Holiday"].map({1: "Yes", 0: "No"})

方法2:修正你自定义的change函数用法

你的自定义函数逻辑没问题,但之前的apply调用方式导致无法正确赋值。可以直接对单列调用apply:

def change(val):
    if val == 1:
        return "Yes"
    else:
        return "No"

# 直接对单列操作并赋值
merged_stores["Open"] = merged_stores["Open"].apply(change)

如果必须用行级apply(不推荐,效率低于单列操作),写法如下:

merged_stores["Open"] = merged_stores.apply(lambda x: change(x["Open"]), axis=1)

方法3:使用numpy.where函数

适合条件明确的替换场景:

import numpy as np

merged_stores["Open"] = np.where(merged_stores["Open"] == 1, "Yes", "No")

为什么之前的方法失败?

  • 你用merged_stores[["Open"]].apply(...)操作的是DataFrame子集,返回的是Series,但直接赋值给merged_stores[["Open"]]时,易因索引或维度匹配问题失效,改成操作单列merged_stores["Open"]即可解决。
  • apply函数本身没有inplace=True参数,设置该参数无效。
  • 若创建新DataFrame后赋值,需确保新列的索引与原DataFrame完全一致,否则会出现缺失值或赋值失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:53:10