行者孙Python

择洗篇-Day12|勾芡替换:replace 替换、rename 重命名字段

📖 知识点

1. replace ():替换数据值

把某列里的指定值替换成新值:

# 把"白菜"替换成"大白菜"
df["菜名"].replace("白菜", "大白菜")

替换多个值(用字典,旧值:新值):

# 同时替换多个
df["菜名"].replace({"白菜": "大白菜", "番茄": "西红柿"})

作用:修正错别字、统一叫法、归一化数据。如把 "男 / 男(性别)" 统一、把 "0 / 否" 统一。

2. rename ():重命名字段(列名)

把列名改成更清晰的名字:

# 用字典改列名(旧列名:新列名)
df.rename(columns={"价格": "单价", "数量": "销量"})

columns= 参数指定要改的列,用 "旧名:新名" 的字典。

3. 是否原地修改

两者默认都返回新表,不改原表:

# 原地修改,用inplace=True
df["菜名"].replace("白菜", "大白菜", inplace=True)
df.rename(columns={"价格": "单价"}, inplace=True)

或重新赋值:df = df.rename(columns={"价格":"单价"})

💡 理解

  • replace 改的是数据值(格子里的内容)
  • rename 改的是列名(表格的表头)
  • 常用来:统一叫法(replace)+ 规范化表头(rename)

⚠️ 易错提醒

  1. replace 和 rename 默认不改原表,要 inplace=True 或重新赋值
  2. replace 在整张表上替换时注意范围,别误换其他列
  3. rename 的 columns= 是固定写法,别漏

⚔️ Kata 实战任务

任务需求:

  1. 导入 pandas,创建一份数据(菜名、价格、数量)
  2. 用 replace 把 "白菜" 替换成 "大白菜",用字典同时替换 "番茄"→"西红柿"
  3. 用 rename 把 "价格" 改名为 "单价"、"数量" 改名为 "销量"
  4. 打印替换和改名后的结果
  5. 用 inplace=True 演示原地修改

参考代码

import pandas as pd

data = {
    "菜名": ["白菜", "番茄", "土豆"],
    "价格": [3, 5, 2],
    "数量": [10, 20, 30],
}
df = pd.DataFrame(data)
print("===== 原表 =====")
print(df)

# 勾芡替换:替换数据值
df["菜名"] = df["菜名"].replace("白菜", "大白菜")
df["菜名"] = df["菜名"].replace({"番茄": "西红柿"})
print("\n===== 替换菜名后 =====")
print(df)

# 重命名字段:改列名
df = df.rename(columns={"价格": "单价", "数量": "销量"})
print("\n===== 重命名列后 =====")
print(df)

运行输出:

===== 原表 =====
   菜名  价格  数量
0  白菜    3   10
1  番茄    5   20
2  土豆    2   30

===== 替换菜名后 =====
     菜名  价格  数量
0  大白菜    3   10
1  西红柿    5   20
2    土豆    2   30

===== 重命名列后 =====
     菜名  单价  销量
0  大白菜    3   10
1  西红柿    5   20
2    土豆    2   30

💡 观察:replace 把 "白菜 / 番茄" 改成了统一叫法 "大白菜 / 西红柿";rename 把 "价格→单价、数量→销量" 的表头规范化。

🧠 思考题

  1. replace 和 rename 分别改的是数据的哪一部分?什么时候该用哪个?
  2. 把 "男 / 女 / 性别 - 男" 这类不统一的值统一成 "男 / 女",该用什么方法?
‹ 返回目录
🏠首页 Python 📦资源 👤关于我