如何在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
相关产品推荐
相关产品推荐

