如何关联两个数据集,为双边客户补充对应属性字段完成数据集补全?
数据集双边关联匹配实现方案
你需要对客户属性表做两次左连接操作,分别匹配Customer1和Customer2两个字段的属性即可完成需求,以下是两种常用实现方式:
方法1:Python Pandas 实现
- 步骤说明:
- 分别读取关系表、客户属性表两个数据集
- 第一次关联:用
Customer1字段关联客户属性表,匹配到的属性重命名为Net_Customer1、Recovered_1 - 第二次关联:用
Customer2字段关联客户属性表,匹配到的属性重命名为Net_Customer2、Recovered_2
- 示例代码:
import pandas as pd # 读取数据集 df_relation = pd.read_csv('你的关系表存储路径') df_cust = pd.read_csv('你的客户属性表存储路径') # 第一次关联匹配Customer1的属性 df_result = pd.merge( df_relation, df_cust.rename(columns={'All_Customers':'Customer1', 'Net':'Net_Customer1', 'Recovered':'Recovered_1'}), on='Customer1', how='left' ) # 第二次关联匹配Customer2的属性 df_result = pd.merge( df_result, df_cust.rename(columns={'All_Customers':'Customer2', 'Net':'Net_Customer2', 'Recovered':'Recovered_2'}), on='Customer2', how='left' ) # 输出最终结果 print(df_result)
方法2:SQL 实现
直接对客户属性表做两次左连接即可,假设关系表名为relation,客户属性表名为cust_attr:
SELECT r.Customer1, r.Customer2, r.Relationship, r.Age_of_Relationship, c1.Net AS Net_Customer1, c2.Net AS Net_Customer2, c1.Recovered AS Recovered_1, c2.Recovered AS Recovered_2 FROM relation r LEFT JOIN cust_attr c1 ON r.Customer1 = c1.All_Customers LEFT JOIN cust_attr c2 ON r.Customer2 = c2.All_Customers
内容的提问来源于stack exchange,提问作者V_sqrt
相关产品推荐
相关产品推荐

