合并不同行数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
相关产品推荐
相关产品推荐

