如何基于指定列合并两个DataFrame并保留其中一个的全部行
实现方案
你之前合并结果长度与dataframe_B一致,是因为默认使用了内连接,仅保留两个表关联列均存在的匹配行。要保留dataframe_A的全部行,使用左连接即可,具体操作如下:
- 首先统一两个DataFrame关联列的命名,例如均命名为
file_name - 使用
pd.merge()指定左连接规则合并,最后填充无匹配位置的占位符
import pandas as pd # 示例:构造你的dataframe_A df_a = pd.DataFrame({ "file_name": ["file 1", "file 2", "file 3", "file 4", "file 5"] }) # 示例:构造你的dataframe_B df_b = pd.DataFrame({ "file_name": ["file 2", "file 4", "file 5"], "col1": ["some data", "other data", "data"], "col2": ["more data", "additional data", "data data"] }) # 左连接合并,完全保留df_a的所有行 merged_df = pd.merge( left=df_a, right=df_b, on="file_name", how="left" ) # 无匹配位置填充占位符~,如需空白可替换为"" merged_df = merged_df.fillna("~")
最终得到的merged_df就和你预期的结果完全一致。如果你想用join方法实现,只要将关联列设为索引后指定how='left'即可,逻辑完全相同。
内容的提问来源于stack exchange,提问作者Acceptable Meanderings
相关产品推荐
相关产品推荐

