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

基于另一DataFrame的条件对指定DataFrame列执行乘2运算

Pandas 按关联分类批量修改指定列值

问题场景

现有两个DataFrame:

  • df1包含name(姓名)和letter(分类字母)两列
  • df2的列名与df1的name完全对应,每行均为数值

需求:将df2中,对应df1里letter为'B'的那些列的所有行数值乘以2,得到目标结果。

原始数据

df1:

name          | letter 
john (345)    | A         
patrick (539) | A       
drew (245)    | A            
john (591)    | B         
patrick (912) | B        
drew (553)    | B        

df2:

john (345) | patrick (539) | drew (245) | john (591) | patrick (912) | drew (553)
1            1               1            1            1               1                     
2            2               2            2            2               2   
3            3               3            3            3               3   
4            4               4            4            4               4   
5            5               5            5            5               5   
6            6               6            6            6               6  

期望结果

john (345) | patrick (539) | drew (245) | john (591) | patrick (912) | drew (553)
1            1               1            2            2               2                     
2            2               2            4            4               4   
3            3               3            6            6               6   
4            4               4            8            8               8   
5            5               5            10           10              10   
6            6               6            12           12              12  

解决方案

通过两步即可实现需求:

  1. 从df1中筛选出letter为'B'的姓名列表,作为df2的目标列
  2. 对df2的目标列直接执行乘2操作

代码实现

import pandas as pd

# 构造示例df1
df1 = pd.DataFrame({
    'name': ['john (345)', 'patrick (539)', 'drew (245)', 'john (591)', 'patrick (912)', 'drew (553)'],
    'letter': ['A', 'A', 'A', 'B', 'B', 'B']
})

# 构造示例df2
df2 = pd.DataFrame({
    'john (345)': [1,2,3,4,5,6],
    'patrick (539)': [1,2,3,4,5,6],
    'drew (245)': [1,2,3,4,5,6],
    'john (591)': [1,2,3,4,5,6],
    'patrick (912)': [1,2,3,4,5,6],
    'drew (553)': [1,2,3,4,5,6]
})

# 筛选需要修改的目标列名
target_cols = df1[df1['letter'] == 'B']['name'].tolist()

# 对目标列执行乘2操作(直接修改原df2)
df2[target_cols] *= 2

# 打印查看结果
print(df2)

如果不想修改原df2,可以先复制一份再操作:

df2_modified = df2.copy()
df2_modified[target_cols] *= 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:20:41