如何以指定key为连接点合并两个长度不等的dataframe
基于flag标识对齐拼接两个行数不等的DataFrame方案
merge、concat、join默认是按值或索引匹配,不支持按指定行位置偏移拼接,可通过先补空行对齐位置再拼接的方式实现需求:
- 定位基础df中flag匹配的起始行索引
# df_base为基础DataFrame,target_flag为指定匹配的flag值 match_index = df_base[df_base["flag"] == target_flag].index[0]
- 给待拼接的第二个df补前置空行,对齐起始位置
import pandas as pd # df_add为待拼接的第二个DataFrame prefix_empty = pd.DataFrame([[None] * len(df_add.columns)] * match_index, columns=df_add.columns) df_add_aligned = pd.concat([prefix_empty, df_add], ignore_index=True)
- 横向拼接两个对齐后的DataFrame
result_df = pd.concat([df_base, df_add_aligned], axis=1)
若基础df存在多个匹配flag的行,默认取第一个匹配行作为对齐起始点,可根据需求自行调整索引取值逻辑。
若补空行后的df_add长度超过基础df长度,拼接结果会自动补全基础df尾部的空行,无需额外处理。
内容的提问来源于stack exchange,提问作者titu84hh
相关产品推荐
相关产品推荐

