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

如何用另一DataFrame列值转换列并为DataFrame添加主类别列

Pandas:基于外部DataFrame转换列值与添加分类列解决方案

我来帮你搞定这两个Pandas操作问题,下面分情况详细说明:

1. 使用另一个DataFrame的列值转换目标DataFrame的列值

核心思路是先从映射DataFrame中提取键值对映射关系,再用Pandas的map()方法或者merge()来完成转换。举个具体例子:
假设我们有一个用来做映射的DataFrame category_map,它存储了子类别和主类别的对应关系:

import pandas as pd
# 映射用的DataFrame
category_map = pd.DataFrame({
    "sub_cat": ["Movie", "Science", "Maths", "Music", "Songs", "Dance", "English"],
    "main_category": ["Entertainment", "Education", "Education", "Entertainment", "Entertainment", "Entertainment", "Education"]
})

如果要把目标DataFrame(比如你的orig_df)的sub_cat列转换成对应的main_category,可以先把category_map转成字典,再用map():

# 构建子类别到主类别的映射字典
cat_dict = category_map.set_index("sub_cat")["main_category"].to_dict()
# 转换目标列
orig_df["main_category"] = orig_df["sub_cat"].map(cat_dict)

如果担心有不存在的子类别导致NaN,还可以用fillna()补充默认值:

orig_df["main_category"] = orig_df["sub_cat"].map(cat_dict).fillna("Other")

2. 为orig_df添加“main_category”列(完整代码示例)

结合你的需求,这里给出完整的可运行代码,我顺便修正了orig_df里的拼写错误(把Sud8改成了Stud8):

import pandas as pd

# 原始DataFrame
orig_df = pd.DataFrame({
    "sub_cat": ["Movie", "Science", "Maths", "Music", "Songs", "Dance", "English", "Maths", "Songs"],
    "Student": ["Stud1", "Stud2", "Stud3", "Stud4", "Stud5", "Stud6", "Stud7", "Stud8", "Stud9"]
})

# 定义子类别与主类别的映射关系(也可以用DataFrame来存储,方便后续扩展)
category_mapping = {
    "Movie": "Entertainment",
    "Science": "Education",
    "Maths": "Education",
    "Music": "Entertainment",
    "Songs": "Entertainment",
    "Dance": "Entertainment",
    "English": "Education"
}

# 添加main_category列
orig_df["main_category"] = orig_df["sub_cat"].map(category_mapping)

# 查看结果
print(orig_df)

运行后你会得到带有main_category列的DataFrame,每个子类别都对应到了正确的主类别。

如果你的映射关系是存储在另一个DataFrame里(而不是字典),就用我第一部分提到的方法,先把映射DataFrame转成字典再用map(),或者直接用merge()来关联两个DataFrame:

# 用merge的方式实现
category_map_df = pd.DataFrame(category_mapping.items(), columns=["sub_cat", "main_category"])
orig_df = orig_df.merge(category_map_df, on="sub_cat", how="left")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:00:39