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

如何用Pandas按行将df2每行值除以df1对应行的值?

解决Pandas中DataFrame逐行对应除法的问题

你遇到的问题是因为原来的代码固定用了df1的第一行值,并且对齐方式不对,导致无法实现逐行对应除法的需求。下面是正确的实现方法和解释:

问题分析

你的需求核心是:

  • df2的第i行所有元素,对应除以df1中索引为i的那个值(比如df2行0 ÷ df1索引0的值,df2行1 ÷ df1索引1的值,以此类推)
  • 原代码df_divided = df_2.div(df_1.iloc[0], axis='column')的问题:
    • df_1.iloc[0]只取了df1的第一个值,导致所有行都用这个固定值做除法
    • axis='column'是按列对齐执行除法,和你要的逐行匹配逻辑完全不符

正确实现代码

首先先确认我们的DataFrame构造和你给出的一致:

import pandas as pd

# 构造df1(一维Series)
df1 = pd.Series(
    [0.963996, 0.313856, 0.047924, 0.034164, 0.622996],
    index=[0, 1, 2, 3, 4]
)

# 构造df2(二维DataFrame)
df2 = pd.DataFrame(
    [
        [0.648803, 0.042037, 0.405195, 0.194691],
        [0.212756, 0.481852, 0.317786, 0.631902],
        [0.360745, 0.940487, 0.447977, 0.398874],
        [0.046590, 0.291148, 0.336938, 0.119006]
    ],
    index=[0, 1, 2, 3]
)

然后执行正确的除法操作:

df_divided = df2.div(df1, axis=0)

代码解释

  • df2.div(df1, axis=0)中,axis=0指定了按行对齐:
    1. Pandas会自动匹配df2的行索引和df1的索引
    2. 对于df2的每一行,用该行的所有元素除以df1中相同索引对应的那个值(这个值会自动广播到整行的所有元素)
    3. 因为df2只有行0-3,而df1的索引0-3都有对应值,所以刚好可以完成所有行的除法操作

比如执行后,df_divided的第一行结果就是:0.648803/0.963996 ≈ 0.6730、0.042037/0.963996 ≈ 0.0436、0.405195/0.963996 ≈ 0.4203、0.194691/0.963996 ≈ 0.2020,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:46:04