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

如何在Pandas DataFrame列中拆分值并按指定列表生成分类列?

解决方案:给DataFrame新增分类列

没问题,这就帮你搞定这个分类需求!下面是具体的实现步骤和代码,完全贴合你的规则:

步骤说明

我们需要遍历keys列的每个单元格,按照以下逻辑生成val列:

  • 若单元格为空白(空字符串或缺失值),则val留空;
  • 若单元格包含actual列表中的任一元素,则val标记为actual;
  • 若单元格元素都不在actual中,则val标记为syn。

完整代码实现

首先构造示例DataFrame(和你描述的一致),然后编写分类逻辑:

import pandas as pd

# 构造你的示例DataFrame
data = {
    "keys": ["one", "two,one", "", "five,one", "", "two,four", "four", "four,five"]
}
df = pd.DataFrame(data)

# 定义你的分类列表
actual = ["one", "two"]
syn = ["four", "five"]

# 定义分类函数
def classify_key_value(key):
    # 处理空白单元格(包括空字符串和NaN)
    if pd.isna(key) or key.strip() == "":
        return ""
    # 拆分单元格内容为元素列表,同时去除每个元素的首尾空格(避免格式问题)
    elements = [elem.strip() for elem in key.split(",")]
    # 检查是否有元素属于actual列表
    if any(elem in actual for elem in elements):
        return "actual"
    # 否则标记为syn
    else:
        return "syn"

# 新增val列
df["val"] = df["keys"].apply(classify_key_value)

# 查看结果
print(df)

输出结果

运行代码后,你会得到符合预期的output_df:

keys     val
0        one  actual
1    two,one  actual
2                   
3   five,one  actual
4                   
5   two,four  actual
6       four     syn
7  four,five     syn

代码解释

  • classify_key_value函数:专门处理单个单元格的分类逻辑,先判断空白情况,再拆分字符串并检查元素归属;
  • apply()方法:把分类函数批量应用到整个keys列,高效生成val列;
  • 加入strip()处理:避免单元格内容里的空格(比如"two , one")导致判断错误,增强代码鲁棒性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:00:22