3 回答
TA贡献1796条经验 获得超7个赞
你可以试试 pandas 外连接。
final_df = storage_df.merge(processed_df, on='Phone', how='outer', suffixes=('', '_y'))
final_df.drop(list(final_df.filter(regex=r'.*_y$').columns), axis=1, inplace=True)
加入数据框
从合并中删除额外的列
TA贡献1829条经验 获得超9个赞
设置Phone为两个数据帧的索引,因为它们是您所说的主键,然后使用pandas.concat.
在这样做的同时从其他数据框中删除公共列,否则它们将在结果数据框中重复。
>>> df1.set_index('Phone', inplace=True)
>>> df2.set_index('Phone', inplace=True)
>>> other_cols = set(df2.columns) - set(df1.columns)
>>> df = pd.concat([df1, df2[other_cols]], axis=1)
>>> df
Name Gender
Phone
238362633 NaN Female
382837371 NaN Male
874647474 Saurabh Male
918348483 Sumit NaN
TA贡献1818条经验 获得超3个赞
您需要做的就是首先删除重复的列并进行外部连接。
# as mentioned you don't need this.
processed_df.drop('Name', axis=1, inplace=True)
# now do an outer join
storage_df.merge(processed_df, on='Phone', how='outer')
添加回答
举报