我有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文件中的外关键候选人?
所需输出:
- 客户。Cust_name (pk),支付。CUST_NAME(颗)
- 客户。Cust_num (pk),支付。聚合(颗)
- 客户。Cust_name (pk), customer。Cust_num (pk),支付。Cust_name (fk),付款。聚合(颗)
我发现这个答案使用pandas和itertools来解决主键问题的第一部分。如何进一步解决查找外键再匹配的第二部分?
尝试遍历itertools.product()
方法生成的所有组合。使用df.isin()
来检查第一个csv的列中的值是否出现在第二个csv文件的相应列中。为了能够匹配它们,请使用Pandas库中的merge()
函数。