在数据处理和分析中,基于同一数据框(DataFrame)中的多个条件创建新列是一个常见的需求。这通常涉及到使用条件逻辑来根据现有列的值生成新的列。以下是一些基础概念、优势、类型、应用场景以及解决方案。
假设我们有一个包含学生考试成绩的数据框,我们想根据数学和英语的成绩创建一个新的列“成绩等级”。
import pandas as pd
# 创建示例数据框
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'数学': [90, 80, 70, 60],
'英语': [85, 75, 65, 55]
}
df = pd.DataFrame(data)
# 定义成绩等级的条件
def grade_level(math, english):
if math >= 90 and english >= 90:
return 'A+'
elif math >= 80 and english >= 80:
return 'A'
elif math >= 70 and english >= 70:
return 'B'
else:
return 'C'
# 应用条件逻辑创建新列
df['成绩等级'] = df.apply(lambda row: grade_level(row['数学'], row['英语']), axis=1)
print(df)
当数据量很大时,使用apply
函数可能会导致性能瓶颈。
解决方法: 使用向量化操作,例如numpy
的条件选择功能。
import numpy as np
conditions = [
(df['数学'] >= 90) & (df['英语'] >= 90),
(df['数学'] >= 80) & (df['英语'] >= 80),
(df['数学'] >= 70) & (df['英语'] >= 70)
]
choices = ['A+', 'A', 'B']
df['成绩等级'] = np.select(conditions, choices, default='C')
当条件非常复杂时,代码可能变得难以维护。
解决方法: 将复杂的条件逻辑分解成多个简单的函数,并使用注释清晰地说明每个步骤。
通过这些方法,可以有效地基于多个条件创建新列,并解决在实际操作中可能遇到的问题。
领取专属 10元无门槛券
手把手带您无忧上云