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

如何在Pandas DataFrame中将指定列除以某一列?

解决Pandas DataFrame列间除法(B、C列分别除以A列)的问题

嘿,我来帮你搞定这个列除法的需求!首先先拆解下你遇到的问题:你想让DataFrame里的B、C列各自除以A列,同时保留A列的原始值,但之前用df/df['a']没得到想要的结果,这里有两个小问题需要修正,再给你几个靠谱的实现方法:

先排查你的代码问题

  1. 列名大小写错误:你的DataFrame列名是大写的A,但代码里写的是df['a'](小写),这会直接抛出KeyError,得改成df['A']才行。
  2. 全列除法不符合需求:就算改成df/df['A'],会把所有列(包括A列)都除以A列,这样A列会变成全1,而你希望A列保持原来的数值,所以需要针对性地处理B、C列。

正确的实现方法

方法1:用join合并A列和计算后的B、C列

先保留原始的A列,再单独对B、C列做除法,最后合并到一起:

import pandas as pd

# 创建你的示例DataFrame
data = {'A': [1, 2, 3], 'B': [10, 20, 15], 'C': [10, 30, 33]}
df = pd.DataFrame(data)

# 执行除法并合并
result_df = df[['A']].join(df[['B', 'C']] / df['A'])
print(result_df)

方法2:用assign直接重新赋值B、C列

这个方法更简洁,直接在原DataFrame的基础上重新计算B和C列的值(不会修改原DataFrame,而是返回新的DataFrame):

result_df = df.assign(B=df['B'] / df['A'], C=df['C'] / df['A'])
print(result_df)

方法3:直接修改原DataFrame(谨慎使用)

如果你确实需要修改原DataFrame,可以直接对B、C列赋值,用div方法指定按行广播:

df[['B', 'C']] = df[['B', 'C']].div(df['A'], axis=0)
print(df)

运行结果验证

不管用上面哪种方法,都会得到你期望的结果:

A     B     C
0  1  10.0  10.0
1  2  10.0  15.0
2  3   5.0  11.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:22:27