如何根据条件合并2个pandas数据框

问题描述 投票:0回答:1

根据某些条件,我在使用 pandas.merge() 连接 2 个数据帧时遇到一些问题。我希望得到一些建议

在下面的示例中,我希望加入 customerId 上的 2 个数据帧。但是,我只对贷款_df 中符合条件的最早记录感兴趣:

  1. 客户.结束日期 < Loans.Date
  2. 贷款金额 > 100

这意味着这是一对一的加入(如果客户不存在贷款,则为一对零)。注意:我假设日期约定是 yyyymmdd。

将 pandas 导入为 pd

Customer_df = pd.DataFrame({ 'CustomerId': [1,2,3], '结束日期 ': ['20240101', '20220101', '20250101'] })

Loans_df = pd.DataFrame({ 'LoanId': [1,2,3], 'CustomerId': [1,2,2], '日期': ['20240112', '20230101', '20240101'], ‘金额’: [1000,2000,4000]})


尝试 pandas merge() 但没有成功

python pandas dataframe
1个回答
0
投票

您可以按

CustomerId
对贷款数据框进行分组并获取
.first()
值,然后将
customer_df
与该值合并:

df = pd.merge(customer_df, loans_df.groupby("CustomerId").first(), on="CustomerId")

输出:

   CustomerId End date   LoanId      Date  Amount
0           1  20240101       1  20240112    1000
1           2  20220101       2  20230101    2000
© www.soinside.com 2019 - 2024. All rights reserved.