将 2 个文件合并在一起似乎正在执行"cross"而不是"left"



上下文:我试图合并2个数据帧与基于一个大的唯一标识符类似的列

main_file有125.428行和26列,new_file有111.597行和24列。它们都有相同的列concat_pyton来合并

上的数据我在做这个:

main_file.merge(new_file, how='left',on='concat_python')

或者

digital_concatenated = pd.DataFrame()
digital_concatenated = reduce(lambda  left,right: pd.merge(left,right,on=['concat_python'], how='left'), dfs)

但是这给了我一个有1.547.301行和49列的数据帧,基本上是重复所有添加后缀_x和_y的列。我只想要一个最后的数据帧合并在一个名为concat_python的唯一标识符上,基于main_file的列,并添加任何可能来自new_file的附加行和/或列,这些行和/或列不存在于main_file

中。谢谢你的帮助!

您可以过滤左侧df中不存在的列:

keep_cols = [c for c in right_df if c not in left_df.columns]
keep_cols += ['concat_python'] # need to keep only the join key
pd.merge(left_df, right_df[keep_cols], how='left', on='concat_python')