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

合并不同行数DataFrame:将df2匹配df1末尾行并填充NaN

解决方案

你可以通过两种常见的Pandas方法实现这个需求:

方法一:构造填充NaN的序列后合并

先计算需要填充NaN的行数,将df2的数据拼接在NaN序列后,再合并到df1中:

import pandas as pd

# 假设df1的列名为col1,df2的列名为col2
nan_row_count = len(df1) - len(df2)

# 构造前nan_row_count行为NaN、后len(df2)行为df2数据的序列
new_column = pd.Series(
    [pd.NA] * nan_row_count + df2['col2'].tolist(),
    index=df1.index
)

# 将新列合并到df1
merged_df = df1.assign(matched_col=new_column)

方法二:利用索引对齐自动填充NaN

通过调整df2的索引,使其与df1的最后59行索引匹配,再通过reindex扩展到df1的全索引,合并时自动填充NaN:

import pandas as pd

# 获取df1最后59行的索引
target_indices = df1.index[-len(df2):]

# 重置df2的索引为目标索引,再扩展到df1的全索引,缺失位置自动填充NaN
df2_aligned = df2.set_index(target_indices).reindex(df1.index)

# 横向合并两个DataFrame
merged_df = pd.concat([df1, df2_aligned], axis=1)

两种方法最终得到的结果一致:新增列的前238行为NaN,后59行与df2的数据一一对应,且和df1的最后59行匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:57:16