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

如何基于条件字典重新计算Pandas DataFrame列值(Python)

问题描述

假设我有如下DataFrame:

AB
0aa4.32
1aa7.00
2bb8.00
3dd74.00
4cc30.00
5bb2.00

另有如下字典,字典键为列A的匹配条件,字典值为对应列B的乘数:

dict1={'aa':-1, 'bb':2}

我想要实现的效果是:当列A的值与字典键匹配时,对应行的列B值乘以字典中的对应乘数,未匹配的行B值保持不变,预期输出结果如下:

AB
0aa-4.32
1aa-7.00
2bb16.00
3dd74.00
4cc30.00
5bb4.00

请问该如何用Python的Pandas库实现上述需求?


解决方案

核心实现仅需一行代码:

df['B'] *= df['A'].map(dict1).fillna(1)

逻辑说明

  1. df['A'].map(dict1):将列A的取值按照给定字典做映射,匹配到键的返回对应乘数,未匹配到的返回NaN
  2. .fillna(1):将未匹配产生的NaN替换为1,保证这部分行的B值乘1后保持原值不变
  3. 直接与列B相乘后赋值回列B,完成计算

完整可运行代码

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'A': ['aa', 'aa', 'bb', 'dd', 'cc', 'bb'],
    'B': [4.32, 7.00, 8.00, 74.00, 30.00, 2.00]
})
dict1 = {'aa':-1, 'bb':2}

# 执行计算
df['B'] *= df['A'].map(dict1).fillna(1)

# 打印结果
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:39:02