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

如何通过if-else从DataFrame现有列创建新列

解决方案

下面提供几种实现需求的方法,均基于Pandas库:

方法1:使用numpy.where(高效推荐)

这是最简洁且性能最优的方式,适合处理大型数据集:

import pandas as pd
import numpy as np

target = 'Math'

# 构建示例DataFrame
df = pd.DataFrame({
    'Col1': ['Math', 'Music', 'Social', 'Arts'],
    'Col2': ['Science', 'Math', 'Math', 'Math']
})

# 创建New_Col列
df['New_Col'] = np.where(df['Col1'] == target, df['Col2'], df['Col1'])

逻辑说明:当Col1等于目标值Math时,取Col2的值;否则取Col1的值。

方法2:使用apply方法

适合需要自定义更复杂逻辑的场景:

df['New_Col'] = df.apply(lambda row: row['Col2'] if row['Col1'] == target else row['Col1'], axis=1)

逻辑说明:按行遍历DataFrame,通过lambda函数判断每行的Col1值,返回对应列的值。

方法3:使用loc索引赋值

分两步赋值,逻辑直观易懂:

# 先给所有行的New_Col赋值为Col1
df['New_Col'] = df['Col1']
# 定位Col1等于目标值的行,将这些行的New_Col替换为Col2的值
df.loc[df['Col1'] == target, 'New_Col'] = df['Col2']

以上三种方法执行后,都能得到你期望的DataFrame结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:55:24