Python中的合并两个数据框架

2024-10-04 01:35:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧

         colA    colB   amount1    amount2     key  
maindf = xx      yy     12         1           55_ab
         qs      rr     13         2           14_rs

        colA    colB   amount1     amount2     key           
df =    dd      tt     10          5           55_ab

我想根据字段键将数据帧df的字段amount1和amount2的值添加到maindf中,得到以下结果

         colA    colB   amount1    amount2     key  
maindf = xx      yy     22         6           55_ab
         qs      rr     13         2           14_rs

Tags: 数据keydfabrrddxxrs
3条回答

这个怎么样?你知道吗

# make main df
main = pd.DataFrame({'ColA' : ['xx', 'qs'],
                     'ColB' : ['yy', 'rr'],
                     'amount1' : [12, 13],
                     'amount2' : [1, 2],
                     'key' : ['55_ab', '14_rs']})

# make other df
df = pd.DataFrame({'ColA' : ['dd'],
                   'ColB' : ['tt'],
                   'amount1' : [10],
                   'amount2' : [5],
                   'key' : ['55_ab']})

# merge dataframes
df1 = main.merge(df,
                 how = 'left',
                 left_on = 'key',
                 right_on = 'key').fillna(0)

# sum amount1
df1.insert(df1.shape[1],
           'amount1',
           df1.amount1_x + df1.amount1_y)

# sum amount2
df1.insert(df1.shape[1],
           'amount2',
           df1.amount2_x + df1.amount2_y)

# drop unneeded columns
df1.drop(['amount1_x',
          'amount2_x',
          'ColA_y',
          'ColB_y',
          'amount1_y',
          'amount2_y'],
         axis = 1,
         inplace = True)

df

Pôle        Libellé entité          PNB N-1         PNB N initial       Key
IBFS        PJSC ROSBANK            -200            0                   zz_t55
IBFS        PJSC ROSBANK            0               1500                bb_y44  
IBFS        PJSC ROSBANK            1000            2000                az_89   
IBFS        PJSC ROSBANK            5000            -250                rr_14

所以这是主数据 假设有更多的专栏,我不能发布所有的内容。 因此,我想对另一个数据帧中的值求和,这些数据帧对字段“PNB N-1”和“PNB N initial”具有相同的键

使用pandas-merge-df,然后按如下所述创建一个或多个新列(仅求两列之和)怎么样 join-left=maindf,right=df,how='left',left\u on='key',right\u on='key'

import pandas as pd
df = pd.DataFrame({'$a':[1,2], '$b': [10,20]}) # creating fake df
df2 = pd.DataFrame({'$a':[1,2], '$b': [10,20]}

dfMerge = pd.merge(left=df, right=df2, how='left', left_on='$a', right_on='$a')
dfMerge["SUM"] = dfMergeTemp["$b_x"] + dfMergeTemp["$b_y"]

# print(dfMergeTemp)

在您的情况下(也许重命名您的列是有意义的,不要混淆正在发生的事情)

mergedDf = pd.merge(left = maindf, right = df, how = 'left', left_on='key', right_on = 'key')

相关问题 更多 >