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

如何合并不同索引长度且含NaN的DataFrame并按对应索引求均值

实现代码

首先导入依赖库:

import pandas as pd
import numpy as np

你给出的两个示例DataFrame:

df1 = pd.DataFrame([1, 2, 3], columns=['A'])
df2 = pd.DataFrame([2, np.nan, 6, 7], columns=['A'])

核心实现逻辑:

df3 = pd.concat([df1, df2]).groupby(level=0).mean()

输出的df3结果完全符合你的预期:

A
0  1.5
1  2.0
2  4.5
3  7.0

逻辑说明

  1. pd.concat([df1, df2])会将两个DataFrame按行堆叠,保留各自原始行索引,不受两个表长度差异影响
  2. groupby(level=0)按原始行索引分组,实现索引对齐合并
  3. pandas的mean()方法计算时会自动忽略np.nan:
    • 同一索引仅单个有效值时直接返回该值,不会保留空值
    • 同一索引多个有效值时自动计算平均值,完全不需要提前将空值转0,避免了数值偏低的问题

该方案同样适用于更多个同列名DataFrame的合并,只需将所有待合并的DataFrame放入concat的列表参数中即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 02:24:06