如何使用if elif else条件向已有数据列插入数据?
用if-elif-else条件向数据列插入数据的实现方法
针对你提出的根据已有列的值生成新列的需求,这里以Python的Pandas库(处理表格数据的常用工具)为例,给出两种高效实现方式:
一、针对你的实际需求(Sale id → Sale no)
方法1:使用apply结合自定义函数
适合逻辑复杂、需要灵活判断的场景:
import pandas as pd # 假设你的原始数据是这样的DataFrame df = pd.DataFrame({ 'Sale id': ['sale001', 'sale002', 'sale003', 'sale001', 'sale004'] }) # 定义条件判断函数 def generate_sale_no(sale_id): if sale_id == 'sale001': return 'clo sale' elif sale_id == 'sale002': return 'blo sale' else: return '' # 生成新的Sale no列 df['Sale no'] = df['Sale id'].apply(generate_sale_no)
方法2:使用np.select(向量化操作,大数据量更高效)
适合多条件分支的场景,执行速度比apply更快:
import pandas as pd import numpy as np df = pd.DataFrame({ 'Sale id': ['sale001', 'sale002', 'sale003', 'sale001', 'sale004'] }) # 定义条件列表和对应结果列表 conditions = [ df['Sale id'] == 'sale001', df['Sale id'] == 'sale002' ] results = [ 'clo sale', 'blo sale' ] # 生成Sale no列,default参数指定else的返回值 df['Sale no'] = np.select(conditions, results, default='')
二、对应你给出的通用示例(columnA → columnB)
同样可以用上述两种方法实现:
用lambda简化版(apply)
df['columnB'] = df['columnA'].apply(lambda x: '123' if x == 'abc' else ('345' if x == 'efg' else '0'))
用np.select实现
conditions = [df['columnA'] == 'abc', df['columnA'] == 'efg'] values = ['123', '345'] df['columnB'] = np.select(conditions, values, default='0')
内容的提问来源于stack exchange,提问作者beginofwork
相关产品推荐
相关产品推荐

