有没有办法根据条件在数据框中附加列的值?

Is there a way to append values of a column in a dataframe based on a condition?

我有两个数据集,df1df2,我想通过在 df1type 列中附加值来在 df2 中创建第三列] 到 df2 中相应的 ids。请注意 df2 中的 ids 可以重复,不应删除。数据帧和预期输出如下:

data1 = [[1283, 234, 8], [1313, 155, 4], 
           [1837, 987,6], [1443, 200, 0],
          [1923, 224, 1], [1912, 247, 7], 
          [1176, 228, 2], [1865, 248, 6], 
          [1219, 265, 3], [1255, 862, 1]] 
      
df1 = pd.DataFrame(data1, columns =['id', 'type', 'qty'])
print(df1)


     id  type  qty
0  1283   234    8
1  1313   155    4
2  1837   987    6
3  1443   200    0
4  1923   224    1
5  1912   247    7
6  1176   228    2
7  1865   248    6
8  1219   265    3
9  1255   862    1

我有另一个数据框如下:

data2 =[[1313, 0], [1313,0], 
      [1443, 0], [1176,0],
      [1912,1], [1912,1], 
      [1912, 1], [1283, 0], 
      [1837, 1], [1837, 1],
      [1837, 1], [1923, 0],
      [1865, 0], [1865, 0],
      [1219, 1], [1255,1]] 
      
df2 = pd.DataFrame(data2, columns =['id', 'class'])
print(df2)


      id    _class
0   1313      0
1   1313      0
2   1443      0
3   1176      0
4   1912      1
5   1912      1
6   1912      1
7   1283      0
8   1837      1
9   1837      1
10  1837      1
11  1923      0
12  1865      0
13  1865      0
14  1219      1
15  1255      1

我想将 df1 中的 'type' 值附加到它们对应的 id 以获得以下内容:

      id    _class    type
0   1313      0       155
1   1313      0       155
2   1443      0       200
3   1176      0       228
4   1912      1       247
5   1912      1       247
6   1912      1       247
7   1283      0       234
8   1837      1       987
9   1837      1       987
10  1837      1       987
11  1923      0       224
12  1865      0       248
13  1865      0       248
14  1219      1       265
15  1255      1       862
df2.merge(df1, on="id").drop(["qty"],axis=1)

    id   class  type
0   1313    0   155
1   1313    0   155
2   1443    0   200
3   1176    0   228
4   1912    1   247
5   1912    1   247
6   1912    1   247
7   1283    0   234
8   1837    1   987
9   1837    1   987
10  1837    1   987
11  1923    0   224
12  1865    0   248
13  1865    0   248
14  1219    1   265
15  1255    1   862