【问题标题】:filter pair of lenders that both lent to a borrower, but not in a same loan过滤同时借给借款人但不在同一笔贷款中的一对贷方
【发布时间】:2019-03-12 12:55:52
【问题描述】:

在新的贷款 id=1 中,公司 S 从两个贷方 A、B 借款。在旧贷款 id=2 中,S 向贷方 B、E、F 借款。在旧贷款 id=3 中,S 向 A,E,G 借款。

数据格式如下:

loan_id_new  loan_id_old  lender  lender_old
1            2            A       B
1            2            A       E
1            2            A       F
1            2            B       B
1            2            B       E
1            2            B       F
1            3            A       A
1            3            A       E 
1            3            A       G 
1            3            B       A       
1            3            B       E       
1            3            B       G

我想排除同一笔贷款(旧的或新的)中的任何一对(贷方,贷方_旧)。 结果应该是这样的:

loan_id_new  loan_id_old  lender  lender_old
1            2            A       F
1            3            B       G

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    我相信这里有人会给你一个更有效/Pythonic的方式来做这件事,但同时我的想法(如果我理解正确的话)是:

    lenders1 = {'A', 'B'}
    lenders2 = {'B', 'E', 'F'}
    lenders3 = {'A', 'E', 'G'}
    
    for lender in [lenders1, lenders2, lenders3]:
       mask = (df['lender'].isin(lender)) & (df['lender_old'].isin(lender))
        df = df[~mask]
    

    未经测试,写在手机上,抱歉缩进不好。

    【讨论】:

    • 可以使用groupby并申请解决吗?贷方列表可能会有所不同,并且数据集太大而无法循环使用。
    猜你喜欢
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多