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

如何对两个DataFrame按相同索引、列逐元素对应相除?

解决方案

Pandas 的数值运算默认会按索引、列名同时自动对齐,天然适配你无序日期索引的使用场景,不需要手动匹配顺序,只需过滤掉仅在单个 DataFrame 中存在的索引行即可,有两种常用实现方式:


方式1:直接运算后过滤(写法简洁)

直接调用div方法做除法,再通过dropna去掉无匹配的行:

import pandas as pd

# 示例数据构造
df1 = pd.DataFrame(
    {'value1': [1,2,5], 'value2': [3,4,6]},
    index=[0,1,2]
)
df2 = pd.DataFrame(
    {'value1': [2,2], 'value2': [2,2]},
    index=[0,1]
)

# 核心代码
result = df1.div(df2).dropna()

输出结果和你预期完全一致:

value1  value2
0     0.5     1.5
1     1.0     2.0

方式2:提前取共有索引(性能更好)

如果你的数据量很大,可以先取两个DataFrame的索引交集,只对共有部分做运算:

# 取双方共有的索引
common_idx = df1.index.intersection(df2.index)
# 仅对共有索引的行做除法运算
result = df1.loc[common_idx] / df2.loc[common_idx]

日期索引适配说明

如果索引是无序的日期类型,上述代码不需要做任何修改,Pandas 对日期类型的索引对齐逻辑完全兼容,无论索引顺序多混乱,都会自动匹配相同日期的行做对应运算。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:54:03