如何基于其他列指定条件将pandas DataFrame列值与列内特定值相除
Pandas 按指定行基准值整列换算实现方案
实现逻辑
先筛选出A列取值为2015的行对应的B列值作为基准除数,再对全表B列做批量除法运算即可。
完整可运行代码
import pandas as pd # 构造测试数据集 df = pd.DataFrame({"A" : (2014, 2015, 2016), "B" : (100, 200, 300)}) # 提取A=2015对应的B列值作为换算基准(默认取匹配到的第一个值) base_value = df.loc[df['A'] == 2015, 'B'].iloc[0] # 对B列全量做除法换算 df['B'] = df['B'] / base_value result = df
运行结果验证
输出的result和预期完全一致:
| A | B |
|---|---|
| 2014 | 0.5 |
| 2015 | 1.0 |
| 2016 | 1.5 |
注意事项
如果A列存在多个值为2015的行,可根据业务需求调整基准值的取值逻辑:
- 取所有匹配行B值的平均值:
base_value = df.loc[df['A'] == 2015, 'B'].mean() - 取所有匹配行B值的最大值:
base_value = df.loc[df['A'] == 2015, 'B'].max() - 取所有匹配行B值的最小值:
base_value = df.loc[df['A'] == 2015, 'B'].min()
内容的提问来源于stack exchange,提问作者psionk
相关产品推荐
相关产品推荐

