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

Python中DataFrame多列与固定均值求差的非手动实现方法咨询

解决批量计算DataFrame列与固定列差值的问题

嘿,作为Python新手能主动把Excel操作迁移到Python里,这步走得很赞!针对你想批量计算A、B、C列和mean列差值的需求,我给你分享两个简单好用的方法,不用再手动逐个写列名啦:

方法一:用循环遍历列(新手友好,直观易懂)

这种方法逻辑直白,先列出要处理的目标列,再循环每个列生成对应的差值列,非常适合新手理解:

import pandas as pd

# 先构造你的示例测试数据
data = {
    'Unnamed:0': ['2020-08-28', '2020-08-29', '2020-08-30', '2020-08-31', '2020-09-01'],
    'A': [1,2,3,4,5],
    'B': [6,7,8,9,10],
    'C': [11,12,13,14,15],
    'mean': [6.0,7.0,8.0,9.0,10.0]
}
new_df = pd.DataFrame(data)

# 定义需要处理的目标列列表
target_cols = ['A', 'B', 'C']

# 循环生成每一列的差值列
for col in target_cols:
    new_df[f'Mean diff{col}'] = new_df[col] - new_df['mean']

执行这段代码后,你的DataFrame会自动生成Mean diffA、Mean diffB、Mean diffC三列,完全不用手动逐个指定列名。

方法二:用Pandas广播机制(更简洁高效)

如果你想写得更优雅、处理大数据时更快,可以用Pandas的广播特性,一次性完成所有列的计算:

# 提取目标列,批量减去mean列(Pandas会自动按行广播运算)
diff_columns = new_df[target_cols].sub(new_df['mean'], axis=0)
# 给生成的差值列重命名
diff_columns.columns = [f'Mean diff{col}' for col in diff_columns.columns]
# 把差值列合并回原DataFrame
new_df = pd.concat([new_df, diff_columns], axis=1)

这种方法利用了Pandas的向量运算能力,比循环更高效,代码也更简洁,适合熟悉Pandas基本操作后使用。

执行后的结果示例

处理后的DataFrame会变成这样:

Unnamed:0ABCmeanMean diffAMean diffBMean diffC
2020-08-2816116.0-5.00.05.0
2020-08-2927127.0-5.00.05.0
2020-08-3038138.0-5.00.05.0
2020-08-3149149.0-5.00.05.0
2020-09-015101510.0-5.00.05.0

你可以根据自己的习惯选择方法,新手先从循环开始理解逻辑,熟悉后再尝试广播的方式哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:33:10