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

如何将Pandas DataFrame两行合并为一行?解决合并后NaN问题

Pandas两行合并为一行(消除NaN)的解决方案

方法1:分组提取非空值

如果两行属于同一逻辑组,可添加统一分组键后,用groupby结合first()提取非空值:

import pandas as pd

# 示例初始DataFrame
df = pd.DataFrame({
    'A': [1, None],
    'B': [None, 2],
    'C': [3, 3]
})

# 添加分组键(所有行归为同一组)
df['group_key'] = 0
# 分组后提取每行非空值,合并为一行
merged_df = df.groupby('group_key').first().reset_index(drop=True)

first()会优先保留每行的非空值,若有重复值则取第一个出现的;若需保留最后一个重复值,替换为last()即可。

方法2:双向填充后取单行

针对仅两行的场景,直接用bfill()+ffill()填充空值,再取第一行:

merged_df = df.bfill().ffill().head(1)

bfill()用下一行非空值填充当前行NaN,ffill()用前一行非空值填充,最终两行的有效数据会合并到同一行。

方法3:堆叠转置过滤NaN

通过stack()过滤NaN,再unstack()转回列结构:

merged_df = df.stack().unstack().reset_index(drop=True)

stack()将列转为多级索引的行,自动剔除NaN;unstack()还原列结构,直接得到无NaN的单行结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:50:25