<p>我不认为使用pandas join函数有什么好的方法可以做到这一点,这确实是一个问题,你应该迭代一个借贷者列表。以下是您所追求的:</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
LenderDF = pd.DataFrame({
'LenderID':['Lender 1', 'Lender 2','Lender 3','Lender 4', 'Lender 5'],
'AmountHave': [300, 150, 500, 100, 200]
})
borrowerDF = pd.DataFrame({
'borrowerID': ['Borrower 1', 'Borrower 2','Borrower 3','Borrower 4'],
'AmountNeed': [100,200,150,300]
})
lenders = LenderDF.to_dict(orient='records')
borrowers = borrowerDF.to_dict(orient='records')
for borrower in borrowers:
# get next lender who can pay
amount_needed = borrower['AmountNeed']
lender = next(lender for lender in lenders if lender['AmountHave'] >= amount_needed)
borrower['LenderID'] = lender['LenderID']
borrower['LenderHave'] = lender['AmountHave']
borrower['LenderRemaining'] = lender['AmountHave'] - amount_needed
# Update lenders amount
lender['AmountHave'] -= amount_needed
print(pd.DataFrame(borrowers))
borrowerID AmountNeed LenderID LenderHave LenderRemaining
0 Borrower 1 100 Lender 1 300 200
1 Borrower 2 200 Lender 1 200 0
2 Borrower 3 150 Lender 2 150 0
3 Borrower 4 300 Lender 3 500 200
</code></pre>