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

如何合并Pandas DataFrame两行?用非NaN值填充缺失字段

合并Pandas DataFrame中两行并填充NaN值

用Pandas的combine_first()方法就能高效解决这个问题,它会自动保留目标行(Bill)的已有非空值,仅用来源行(Jim)的非空值填充目标行的NaN,完美适配多字段场景,不需要逐个单元格修改。

代码示例

首先模拟你的DataFrame结构:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Name': ['Jim', 'Bill', 'Alice'],
    'City': ['New York', np.nan, 'London'],
    'Age': [30, 28, np.nan],
    'Email': ['jim@example.com', 'bill@example.com', np.nan],
    # 可添加任意数量的字段,处理逻辑一致
    'Phone': [np.nan, '123-4567', '987-6543']
})

执行合并操作:

# 定位Jim和Bill的行数据
jim_row = df[df['Name'] == 'Jim'].iloc[0]
bill_row = df[df['Name'] == 'Bill'].iloc[0]

# 合并:优先保留Bill的非空值,用Jim的非空值填充Bill的NaN
merged_bill = bill_row.combine_first(jim_row)

# 更新DataFrame中的Bill行
df.loc[df['Name'] == 'Bill'] = merged_bill

# 若不需要保留Jim行,可删除
df = df[df['Name'] != 'Jim'].reset_index(drop=True)

关键说明

  • combine_first()会逐列处理两行数据:只有当Bill行的字段为NaN时,才会用Jim行对应字段的非NaN值填充;Bill行已有有效值的字段会完全保留,不会被覆盖。
  • 该方法支持任意数量的字段,无需针对每个字段单独编写逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:06:17