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

如何在Pandas中合并同一DataFrame的两行数据

问题描述

原始DataFrame如下:

snIDAmount
0103836.68
11087.63
270
3202863.56

需要将其转换为如下形式,合并存在缺失值的相邻行,补全有效数据后移除冗余行:

snIDAmount
0103836.68
1701087.63
3202863.56
解决方案

使用Pandas可以通过分组聚合的方式实现需求,代码如下:

import pandas as pd
import numpy as np

# 构造原始数据
df = pd.DataFrame({
    'sn': [0, 1, 2, 3],
    'ID': [10, np.nan, 70, 20],
    'Amount': [3836.68, 1087.63, np.nan, 2863.56]
})

# 生成分组标识:无缺失值的行作为新分组的起点
group_key = df.notna().all(axis=1).cumsum()

# 按分组聚合,提取有效数据并保留目标行的sn
result = df.groupby(group_key).agg({
    'sn': 'first',
    'ID': lambda x: x.dropna().iloc[0],
    'Amount': lambda x: x.dropna().iloc[0]
}).reset_index(drop=True)

print(result)

代码说明

  • df.notna().all(axis=1):判断每行是否所有字段都无缺失值,返回布尔数组;cumsum()将连续的缺失行归为同一分组,无缺失行作为新分组的起始。
  • 分组聚合时:
    • sn取分组内的第一个值,保留需要的行标识;
    • ID和Amount分别提取分组内的非缺失值,完成数据补全;
  • 最后通过reset_index(drop=True)重置索引,得到目标结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:45:38