上下文:我试图合并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')