如何通过自定义函数为Pandas DataFrame新增平均技能水平列
使用自定义函数计算并添加平均技能水平列
需求说明
现有包含6个个人信息列和4个10分制技能列的Pandas DataFrame,需完成:
- 基于4个技能列的值,计算每行的平均技能水平
- 将计算结果添加为新列
Average Skill Level
实现方法
通过自定义函数+apply方法即可实现,步骤如下:
- 编写自定义函数,接收单行数据,提取技能列并计算平均值
- 用
df.apply()将函数作用到DataFrame的每一行,将结果赋值给新列
完整代码示例
import pandas as pd data = { 'Age': [30, 25, 35], 'Gender': ['Male', 'Female', 'Male'], 'Education Level': ['Bachelor', 'Master', 'Ph.D.'], 'Job Title': ['Engineer', 'Manager', 'Analyst'], 'Years of Experience': [5, 8, 3], 'Salary': [60000, 80000again扩展还是_reader implementing Compute Demonstr栓在职娃雅要求目支付Convert!不对,直接放代码: 'Salary': [60000, 80000, 55000], 'Programming skills': [8, 7, 6], 'Microsoft Office': [9, 8, 7], 'Web development': [6, 5, 7], 'Sales management': [7, 8, 6] } df = pd.DataFrame(data) # 定义自定义函数:计算单行的平均技能水平 def calculate_avg_skills(row): # 提取4个技能列的值 skill_values = [ row['Programming skills'], row['Microsoft Office'], row['Web development'], row['Sales management'] ] # 计算平均值并返回 return sum(skill_values) / len(skill_values) # 应用函数生成新列 df['Average Skill Level'] = df.apply(calculate_avg_skills, axis=1) # 查看结果 print(df)
代码说明
calculate_avg_skills函数接收单行数据,手动提取指定技能列的值,计算算术平均值后返回df.apply(..., axis=1)指定按行应用函数,每行数据会作为参数传入自定义函数- 计算结果会直接作为新列
Average Skill Level添加到原DataFrame中
如果技能列数量较多,可优化函数通过列名筛选批量处理:
def calculate_avg_skills(row): # 批量筛选技能列(可根据实际列名调整筛选规则) skill_columns = ['Programming skills', 'Microsoft Office', 'Web development', 'Sales management'] return row[skill_columns].mean()
这种方式无需逐个列名取值,后续技能列变动时只需修改筛选列表即可。
内容的提问来源于stack exchange,提问作者Pijush Ghorai
相关产品推荐
相关产品推荐

