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

如何为DataFrame新增列,基于其他列的行统计值计算?

解决方法:给DataFrame按行规则新增计算列

嘿,这个需求不用单独创建额外数据集就能搞定,我给你两种实用的实现方式,都是直接在原DataFrame上操作:

方法1:行标签映射 + apply函数

这种方法适合行标签没有统一规律的场景,直接给每个行标签绑定对应的计算逻辑:

首先先构造你的测试DataFrame(方便验证):

import pandas as pd

data = {
    'Test1': [20, 10, 30, 50, 1.2, 1.3, 1.0, 2.0],
    'Test2': [30, 15, 50, 80, 1.2, 1.3, 1.2, 2.1],
    'Test3': [40, 13, 90, 40, 1.2, 1.3, 1.3, 2.2]
}
Values = pd.DataFrame(data, index=['Power1', 'Power2', 'Max_Power1', 'Max_Power2', 'Voltage1', 'Voltage2', 'Current1', 'Current2'])

然后定义每个行标签对应的计算规则,再通过apply按行执行:

# 定义行标签到计算逻辑的映射字典
calc_map = {
    'Power1': lambda row: row.mean(),
    'Power2': lambda row: row.mean(),
    'Max_Power1': lambda row: row.max(),
    'Max_Power2': lambda row: row.max(),
    'Voltage1': lambda row: row.mean(),
    'Voltage2': lambda row: row.mean(),
    'Current1': lambda row: row.min(),
    'Current2': lambda row: row.min()
}

# 新增Result列,按行调用对应的计算逻辑
Values['Result'] = Values.apply(lambda row: calc_map[row.name](row), axis=1)

方法2:利用行标签规律 + np.select

如果你的行标签有统一前缀(比如Power/Max_Power/Voltage/Current),用numpy.select会更高效,代码也更简洁:

import numpy as np

# 定义分组条件:按行标签前缀匹配
conditions = [
    Values.index.str.startswith('Power'),
    Values.index.str.startswith('Max_Power'),
    Values.index.str.startswith('Voltage'),
    Values.index.str.startswith('Current')
]

# 对应每组的计算方式
calculations = [
    Values.mean(axis=1),  # Power开头的行取平均值
    Values.max(axis=1),   # Max_Power开头的行取最大值
    Values.mean(axis=1),  # Voltage开头的行取平均值
    Values.min(axis=1)    # Current开头的行取最小值
]

# 新增Result列
Values['Result'] = np.select(conditions, calculations)

验证结果

执行完上面任意一种方法后,你的Values DataFrame会新增Result列,最终结果如下:

Test1Test2Test3Result
Power120304030.0000
Power210151312.6667
Max_Power130509090.0000
Max_Power250804080.0000
Voltage11.21.21.21.2000
Voltage21.31.31.31.3000
Current11.01.21.31.0000
Current22.02.12.22.0000

这完全符合你要求的各行计算规则~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:54:01