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

如何在Pandas DataFrame中跨行执行算术运算(如计算毛利率)?

对DataFrame执行跨行算术运算(以毛利率计算为例)

假设你的DataFrame结构是指标作为行索引,列代表不同维度(如季度、地区),先看一个示例场景:

import pandas as pd

# 构造示例DataFrame
data = {
    'Q1': [10000, 6500],
    'Q2': [12000, 7200],
    'Q3': [15000, 9000]
}
df = pd.DataFrame(data, index=['Revenue', 'Gross Profit'])

此时DataFrame结构如下:

Q1     Q2     Q3
Revenue     10000  12000  15000
Gross Profit 6500   7200   9000

方法1:通过行索引直接选取运算

直接用行标签定位目标行,执行除法后将结果添加为新行:

# 计算毛利率:Gross Profit / Revenue,结果作为新行
df.loc['Gross Margin'] = df.loc['Gross Profit'] / df.loc['Revenue']

方法2:通过位置索引选取行(无命名行索引时)

如果你的行是默认数字索引(比如0对应Revenue,1对应Gross Profit),用iloc定位:

# 假设0是Revenue行,1是Gross Profit行
df.loc['Gross Margin'] = df.iloc[1] / df.iloc[0]

关键注意事项

  • 处理除零错误:如果Revenue存在0值,运算会产生inf,可以替换为合理值:
    gross_margin = df.loc['Gross Profit'] / df.loc['Revenue']
    gross_margin = gross_margin.replace([float('inf'), -float('inf')], 0)
    df.loc['Gross Margin'] = gross_margin
    
  • 处理空值:运算后出现的NaN可按需填充:
    df.loc['Gross Margin'] = (df.loc['Gross Profit'] / df.loc['Revenue']).fillna(0)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:45:28