【问题标题】:Add column to dataframe based on corresponding values of two row values from another dataframe根据来自另一个数据帧的两个行值的对应值将列添加到数据帧
【发布时间】:2020-07-14 00:26:21
【问题描述】:

我有两个数据框:

df1 = pd.DataFrame({'X1':[2,2,2,2,3,3,3,3,4,4,4,5,5,5,5], 
                'X2':[10,20,70,80,10,20,70,80,50,70,80,60,70,80,90], 
                'X3':[0,1,0,1,1,1,1,0,0,0,1,1,0,0,0]})


     X1  X2  X3
0    2  10   0
1    2  20   1
2    2  70   0
3    2  80   1
4    3  10   1
5    3  20   1
6    3  70   1
7    3  80   0
8    4  50   0
9    4  70   0
10   4  80   1
11   5  60   1
12   5  70   0
13   5  80   0
14   5  90   0

另一个是df2:

df2 = pd.DataFrame({'X1':[2,3,3,4,5,5,5], 
                'X2':[10,20,70,50,60,70,80]})

   X1  X2
0   2  10
1   3  20
2   3  70
3   4  50
4   5  60
5   5  70
6   5  80

我需要根据 df1 每一行的 X1 和 X2 的值,找到 df2 对应的 X3 值。结果应该是这样的:

    X1  X2  X3
0   2  10   0
1   3  20   1
2   3  70   1
3   4  50   0
4   5  60   1
5   5  70   0
6   5  80   0

【问题讨论】:

    标签: pandas dataframe


    【解决方案1】:

    使用pandas.DataFrame.merge:

    df3 = df2.merge(df1, on=["X1", "X2"])
    print(df3)
    

    输出:

       X1  X2  X3
    0   2  10   0
    1   3  20   1
    2   3  70   1
    3   4  50   0
    4   5  60   1
    5   5  70   0
    6   5  80   0
    

    【讨论】:

    • 谢谢你,克里斯。如果 df1 有其他列,例如 X4、X5、.. 我只需要 df2 和 X1、X2 和 X3 列。
    【解决方案2】:
    df2 = df2.join(df1.set_index(['X1', 'X2']), on=['X1', 'X2'])
    
    # display(df2)
       X1  X2  X3
    0   2  10   0
    1   3  20   1
    2   3  70   1
    3   4  50   0
    4   5  60   1
    5   5  70   0
    6   5  80   0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 2021-04-22
      • 2019-07-10
      • 2020-03-13
      • 1970-01-01
      相关资源
      最近更新 更多