基于游戏分类列创建新列:单/多人及两者并存的条件判断问题
解决电子游戏分类列的新列生成问题
你需要根据Categories列是否包含Single-player、Multi-player或两者都包含生成新列,原代码存在函数名不匹配、拼写错误,且缺少两者同时包含的判断逻辑,以下是修正并优化后的实现方案:
方案一:逐行判断(直观易懂)
def categorize_game(row): has_single = 'Single-player' in row['Categories'] has_multi = 'Multi-player' in row['Categories'] # 优先判断同时包含的情况 if has_single and has_multi: return 'Both Single-player & Multi-player' elif has_single: return 'Single-player' elif has_multi: return 'Multi-player' else: return 'Other' # 可根据需求自定义默认值 df['New_col'] = df.apply(categorize_game, axis=1)
方案二:向量化处理(大数据集更高效)
逐行apply效率较低,推荐用批量向量化操作提升性能:
import numpy as np # 批量标记是否包含目标分类 df['has_single'] = df['Categories'].str.contains('Single-player', na=False) df['has_multi'] = df['Categories'].str.contains('Multi-player', na=False) # 多条件映射生成新列 conditions = [ df['has_single'] & df['has_multi'], df['has_single'], df['has_multi'] ] choices = [ 'Both Single-player & Multi-player', 'Single-player', 'Multi-player' ] df['New_col'] = np.select(conditions, choices, default='Other') # 清理临时生成的布尔列 df.drop(['has_single', 'has_multi'], axis=1, inplace=True)
内容的提问来源于stack exchange,提问作者Manu
相关产品推荐
相关产品推荐

