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

使用pandas处理CSV数据的条件替换、分组与合并相关问题

多条件批量替换字段值

你当前用的loc写法本身就是pandas的矢量化操作,性能远高于循环遍历,完全可以满足高性能要求。如果要同时处理多组替换规则,不需要写多行loc,推荐用numpy.select实现批量映射,代码可维护性更高:

import numpy as np

# 替换规则优先级从上到下,先匹配的规则先生效
conditions = [
    # 规则1:term为2且科目含foreign language
    (df['term'] == '2') & (df['school_subject'].str.contains('foreign language', na=False)),
    # 规则2:科目含Informatics
    df['school_subject'].str.contains('Informatics', na=False)
]
# 对应条件的替换值,顺序和conditions完全一致
replace_values = [
    'oth_lang',
    'comp_sci' # 这里替换为你需要的Informatics对应的目标值即可
]
# 不匹配任何规则的保留原字段值
df['school_subject'] = np.select(conditions, replace_values, default=df['school_subject'])

如果仅需要筛选多组条件统一替换为同一个值,直接用|拼接条件放在单个loc里即可:

df.loc[
    ((df['school_subject'].str.contains('foreign language')) & (df['term'] == '2')) | 
    (df['school_subject'].str.contains('Informatics')), 
    'school_subject'
] = '统一替换值'

数据拆分与合并

按term拆分数据集(支持提前排除指定数据)

先执行排除逻辑过滤不需要的数据,再用groupby拆分即可:

# 示例:先排除所有科目为pe的无效数据,可按需修改过滤条件
filtered_df = df[df['school_subject'] != 'pe'].copy()
# 按term拆分,生成key为term值、value为对应数据集的字典
term_df_dict = dict(tuple(filtered_df.groupby('term')))

# 直接取对应term的数据集
term1_df = term_df_dict.get('1')
term2_df = term_df_dict.get('2')

多学期数据合并

用pd.concat即可完成合并,支持任意数量的同结构数据集拼接:

import pandas as pd

# 合并term1和term2数据为全学年数据集,ignore_index=True重置行索引避免重复
full_year_df = pd.concat([term1_df, term2_df], ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:15:03