如何通过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
相关产品推荐
相关产品推荐

