如何合并两个数据框熊猫

时间:2021-01-30 09:52:16

标签: python pandas dataframe

我有两个数据框正在尝试加入但未成功。这是数据框:

 df1
     symbol count
 0.  AAL      20
 1.  BBY      34
 2.  CLL      23
 3.  DKG      12
 4.  LMND     20

 df2
     symbol TYPE count
 0.  AAL    CALL  11
 1.  AAL    PUT   9
 2.  BBY    CALL  30
 3.  BBY    PUT   4
 4.  CLL    CALL  23
 5.  CLL    PUT   3
 6.  DKG    CALL  6
 7.  DKG    PUT   6
 8.  LMND   CALL  10
 9.  LMND   PUT   10

Expected out put

 symbol  TotalCount  Put  Call
 0.  AAL    20         9    11
 1.  BBY    34         4    30 
 2.  CLL    26         3    23
 3.  DKG    12         6    6
 4.  LMND   20         10   10

这是我的尝试: newdf = pd.merge(df1,df2, how='left') 但这并不正确。我错过了什么?

2 个答案:

答案 0 :(得分:1)

在合并之前,您需要先创建 CallPut 列(可以通过旋转来实现):

(
    df1.merge(df2.pivot("symbol", "TYPE", "count"), on="symbol", how="left")
    .assign(TotalCount=lambda x: x['CALL'] + x['PUT'])
    .drop(columns="count")
)

  symbol  CALL  PUT  TotalCount
0    AAL    11    9          20
1    BBY    30    4          34
2    CLL    23    3          26
3    DKG     6    6          12
4   LMND    10   10          20

答案 1 :(得分:0)

您可以组合使用 groupbyunstack

df1.merge(
    df2.groupby(['symbol', 'TYPE'])['count'].max().unstack('TYPE'),
    how='left', left_on='symbol', right_on='symbol'
)

  symbol  count  CALL  PUT
0    AAL     20    11    9
1    BBY     34    30    4
2    CLL     23    23    3
3    DKG     12     6    6
4   LMND     20    10   10