如何在Pandas中高效计算多列均值并生成新列?
如何在Pandas中高效计算多列均值生成新列?
针对你这种有大量同前缀(salary_)列的场景,完全不用逐个指定列名,Pandas有非常高效的批量处理方法,下面给你两种实用方案:
方案1:用filter()快速匹配目标列
这是最简洁的写法,直接通过like参数筛选所有包含salary_的列,然后按行计算均值:
import pandas as pd # 你的原始DataFrame df = pd.DataFrame({ 'salary_1': [230, 345, 222], 'salary_2': [235, 375, 292], 'salary_3': [210, 385, 260] }) # 生成均值列 df['salary_mean'] = df.filter(like='salary_').mean(axis=1)
filter(like='salary_')会自动选中所有列名包含salary_的列,不管你后续新增多少个salary_4、salary_5都能自动覆盖;axis=1表示按行计算均值,确保每一行的结果对应该行的薪资值的平均。
方案2:用列名的字符串方法精准筛选
如果你的列名是严格以salary_开头(不想匹配到比如extra_salary这类列),可以用str.startswith()来精准定位:
# 先获取所有以salary_开头的列名 salary_cols = df.columns[df.columns.str.startswith('salary_')] # 计算均值并生成新列 df['salary_mean'] = df[salary_cols].mean(axis=1)
最终结果
执行完上述代码后,你的DataFrame会变成:
salary_1 salary_2 salary_3 salary_mean 0 230 235 210 225.000000 1 345 375 385 368.333333 2 222 292 260 258.000000
这两种方法都不需要手动枚举列名,处理大量同类型列时非常高效,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Carmen Pérez Carrillo
相关产品推荐
相关产品推荐

