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

Python如何拼接两个DataFrame:仅保留常量列值,差异列设为nan

实现DataFrame按规则拼接的方法

你可以按以下逻辑实现需求,核心是先识别恒定列,再扩展df2后拼接:

完整代码实现

import pandas as pd
import numpy as np

# 构造示例数据
df1 = pd.DataFrame({
    'A': ['ar']*5,
    'B': [2,3,0,4,5],
    'C': [3]*5,
    'id': [1,1,2,2,2],
    'val': [3.2,5.6,7.8,9.2,3.4]
})
df2 = pd.DataFrame({
    'id': [1,2],
    'val': [3.3,6.4]
})

# 1. 筛选df1中取值完全恒定的列
constant_cols = df1.columns[df1.nunique() == 1].tolist()

# 2. 给df2补充恒定列的取值
for col in constant_cols:
    df2[col] = df1[col].iloc[0]

# 3. 拼接两个DataFrame,自动填充缺失列为NaN
df3 = pd.concat([df1, df2], ignore_index=True)

print(df3)

逻辑说明

  • 第一步通过nunique() == 1判断列是否所有值一致,筛选出所有恒定列,示例中得到的结果是['A', 'C']
  • 第二步给df2补充所有恒定列的取值,直接取df1对应列的第一个值即可(恒定列所有值相同)
  • 第三步拼接时Pandas会自动对齐列,df2中不存在的非恒定列会自动填充NaN,ignore_index=True用来重置行索引,避免索引重复。
    运行代码后输出的df3和你预期的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:15:04