如何基于匹配行使用Spark Scala合并两个DataFrame
解决思路与代码实现
要实现仅保留两个DataFrame中ID匹配的行并合并,可按以下步骤操作:
- 提取共同ID:通过
intersection方法找出两个表ID列的交集,锁定需要保留的ID范围。 - 筛选目标行:分别从两个DataFrame中筛选出ID属于共同ID列表的行。
- 合并并排序:将筛选后的两个表拼接,再按ID排序,让同一ID的行相邻排列。
完整代码
import pandas as pd # 创建示例DataFrame df1 = pd.DataFrame({ 'ID': ['V1', 'V2', 'V3'], 'status': ['Low', 'Low', 'Low'] }) df2 = pd.DataFrame({ 'ID': ['V1', 'V2', 'V6'], 'status': ['High', 'High', 'High'] }) # 获取两个表共有的ID common_ids = df1['ID'].intersection(df2['ID']) # 筛选出仅含共同ID的行 filtered_df1 = df1[df1['ID'].isin(common_ids)] filtered_df2 = df2[df2['ID'].isin(common_ids)] # 合并并按ID排序 result = pd.concat([filtered_df1, filtered_df2]).sort_values(by='ID').reset_index(drop=True) print(result)
输出结果
ID status 0 V1 Low 1 V1 High 2 V2 Low 3 V2 High
内容的提问来源于stack exchange,提问作者RMK
相关产品推荐
相关产品推荐

