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

Pandas如何基于指定变量命名新列存储A与B的差值

Pandas按Value值分存A-B差值到对应列的实现方案

原有代码失效原因

你循环内筛选得到的df_red是原DataFrame的切片副本,对副本新增列的操作不会同步到原DataFrame,因此无法得到预期结果。

最优实现方案

方案1:向量化操作(性能最优,适合大数据量)

全程无循环,性能远高于逐值判断,自动适配Value列的所有唯一值,无需手动指定取值:

import pandas as pd

# 读取数据
df = pd.read_excel(r'E:\...\.xlsx')
# 计算所有行的A-B差值
diff = df['A'] - df['B']
# 生成Value对应的哑变量列,自动按Diff前缀命名,乘以差值得到对应结果
diff_cols = pd.get_dummies(df['Value'], prefix='Diff').multiply(diff, axis=0)
# 合并到原DataFrame,不匹配的行自动填充0
df = pd.concat([df, diff_cols], axis=1)

方案2:优化版循环(可读性高,适合小数据量)

如果更习惯循环写法,可以直接在原DataFrame上操作,避免修改副本的问题,同样不需要硬编码每个Diff列:

import pandas as pd

df = pd.read_excel(r'E:\...\.xlsx')
# 遍历所有唯一的Value值
for v in df['Value'].unique():
    df[f'Diff_{v}'] = (df['A'] - df['B']).where(df['Value'] == v, 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:54:04