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

Python中基于DataFrame现有字符串列按规则生成新列的方法

pandas实现Termcode列匹配赋值方案

核心逻辑

按需求拆分判断规则即可:

  • 先固定4个学期关键词:summer/spring/fall/winter
  • 空值(含NaN、空字符串)直接赋值none
  • 统计每行Term字段命中的关键词数量:命中1个则返回对应学期名,命中2个及以上返回multiple

完整可运行代码

import pandas as pd
import numpy as np

# 构造初始DataFrame
df = pd.DataFrame({
    'School': ['A', 'B', 'A', 'F', 'C', 'E'],
    'Term': ['summer 2020', 'spring 21', 'summer/spring', 'wintersem', 'fall trimester', np.nan],
    'Students': [324, 101, 201, 44, 98, 23]
})

# 定义学期关键词
term_keywords = ['summer', 'spring', 'fall', 'winter']

def match_termcode(term_val):
    # 空值判断
    if pd.isna(term_val) or str(term_val).strip() == '':
        return 'none'
    term_str = str(term_val).lower()
    # 统计命中的关键词
    hit = [kw for kw in term_keywords if kw in term_str]
    if len(hit) == 1:
        return hit[0]
    elif len(hit) >=2:
        return 'multiple'
    # 无任何关键词匹配的场景默认返回none,可按需调整
    return 'none'

# 生成新列
df['Termcode'] = df['Term'].apply(match_termcode)

运行结果

执行代码后得到的DataFrame和预期结构完全一致:

SchoolTermStudentsTermcode
Asummer 2020324summer
Bspring 21101spring
Asummer/spring201multiple
Fwintersem44winter
Cfall trimester98fall
E(空值)23none

代码默认做了小写转换,可直接兼容Term字段大小写不统一的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:51:27