在具有不同列名的熊猫中联接两个数据框

时间:2020-06-11 19:06:25

标签: python pandas dataframe

我有两个数据框,一个显示支票帐户的交易,另一个显示信用卡上的交易。这两个列表之间的唯一区别是,前者将交易分为“借方”交易和“贷方”交易,而后者仅具有信贷使用情况,负数表示现金返还,而非负数表示卡上的正常购买。如果您愿意,我想“加入”这两个,同时将负数的交易追加到第一个列表的贷方,将非负数的交易追加到借方。除了这两列之外,还有一个“ TransactionID”列,其作用与两个列表相同。以下是一些列表:

df0:

                                         TransactionID    Debit   Credit
0    HCCLAIMPMT BCBS TEXAS TRN*1*C20120E10592180*13...     0.00    21.29
1                    BANKCARD BTOT DEP 543052900022658     0.00   124.93
2                                          Check #1867  8755.50     0.00

df1:

    Amount                    TransactionID
0    -3.41    YOUR CASH BACK THIS PERIOD IS
1    29.22              PAYPAL ON EBAY MARK
2    30.45                     REDTAGFABRIC

我该如何加入他们?

编辑-预期输出:

                                      TransactionID       Debit   Credit
0    HCCLAIMPMT BCBS TEXAS TRN*1*C20120E10592180*13...     0.00    21.29
1                    BANKCARD BTOT DEP 543052900022658     0.00   124.93
2                                          Check #1867  8755.50     0.00
0                        YOUR CASH BACK THIS PERIOD IS     0.00     3.41
1                                  PAYPAL ON EBAY MARK    29.22     0.00      
2                                         REDTAGFABRIC    30.45     0.00      

1 个答案:

答案 0 :(得分:0)

在我看来,您不想像在SQL连接中那样连接,而是合并两个数据帧。为此,请注意您的借方或贷方之一为零。您可以考虑一下:

# assume df2 is the List2 dataframe, add "debit" and "credit" columns
df2['Debit'] = df2['Amount'].clip(0)
df2['Credit'] = (-df2['Amont']).clip(0)

# combine them
combined = pd.concat([df1, df2[['TransactionID', 'Debit', 'Credit']]])