如何在两个CSV文件中查找所有可能的列集作为主键和外键候选?



我有2个CSV文件,PAYMENT和CUSTOMER(未规范化,例如,真实文件每个多达100列):

ID, CUST_NAME, CUST_NUM, CLIENT_NAME, PAYMENT_NUM, START_DATE,  END_DATE
1,     CUST1,   A001,    CLIENT1,       10,        2018-04-01, 2018-04-02
2,     CUST1,   A001,    CLIENT1,       10,        2018-04-01, 2018-05-30
3,     CUST2,   A002,    CLIENT1,      101,        2018-04-02, 2018-04-03
4,     CUST2,   A002,    CLIENT1,      102,        2018-04-02, 2018-04-03
ID, CUST_NAME, CUST_NUM, AGE, GENDER, COUNTRY
1,     CUST1,   A001,     32,   M,       US
2,     CUST2,   A002,     34,   F,       CA
3,     CUST3,   A003,     45,   M,       US
4,     CUST4,   A004,     31,   F,       CA

如何找到所有可能的列集作为主键&在两个CSV文件中的外关键候选人?

所需输出:

  1. 客户。Cust_name (pk),支付。CUST_NAME(颗)
  2. 客户。Cust_num (pk),支付。聚合(颗)
  3. 客户。Cust_name (pk), customer。Cust_num (pk),支付。Cust_name (fk),付款。聚合(颗)

我发现这个答案使用pandas和itertools来解决主键问题的第一部分。如何进一步解决查找外键再匹配的第二部分?

尝试遍历itertools.product()方法生成的所有组合。使用df.isin()来检查第一个csv的列中的值是否出现在第二个csv文件的相应列中。为了能够匹配它们,请使用Pandas库中的merge()函数。

相关内容

  • 没有找到相关文章

最新更新